V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
epicq
V2EX  ›  问与答

最近在自学 springboot 和 mybatis,小白有点问题想请教大家

  •  
  •   epicq · 2019-05-16 22:42:35 +08:00 · 1516 次点击
    这是一个创建于 2020 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Ⅰ、entity、domain、pojo,有啥区别?各自都在什么情况下使用? (感觉虽然概念上有些区别,但是看很多项目是随便用的)

    Ⅱ、目前 spring 用 xml 还是注解多一点? (是不是新的 springboot 项目用注解,老的 springframework 项目用 xml ?目前行业一般用什么?)

    Ⅲ、mybatis 用 xml 还是注解? ( xml 很反人类啊,而且还要搞个 mapper.xml ,我现在都是直接在 DAO 层直接 @mapper,然后 @Insert 等等)

    Ⅳ、举个例子

    [前端发送的 json ] : { "carInfo": { "load": "1", "price": "2", }, "newSites": [ { "siteName": "AAA", "siteId": "1234" }, { "siteName": "BBB", "siteId": "3212" } ] }

    [ controller ] : @RequestBody SitesInfo sitesInfo

    [ domain ] : class SitesInfo(){ private CarInfo carInfo; private List<newsites> newSites; private int id; ......getter and setter...... }</newsites>

    [ dao ] : @Insert("insert into table (newSites, carInfo) values(#{newSites}, #{carInfo})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int insert(SitesInfo sitesInfo);

    这样就有问题,好像是 type handler 不匹配?

    目前想到的解决方案: 1、自定义一个 type handler ?可行吗? 2、搞一个 SitesInfoHelp

    class SitesInfoHelp(){ private String sitesInfo; private int id;

    public String getSitesInfo() {
        return sitesInfo;
    }
    public void setSitesInfo(SitesInfo sitesInfo) {
        this.sitesInfo = sitesInfo.toString();
    }
    

    }

    然后 @Insert("insert into table (sitesInfo) values(#{sitesInfo})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int insert(SitesInfoHelp sitesInfoHelp);

    这样就可以了,同时需要各项数据的话,可以很轻松的 sitesInfo.getXXX

    [那么问题来了] 1、哪一种方式更好? 2、是根据 json 结构设置 domain 结构?还是拿到 json 解析成自定义的 Object ?但是 @RequestBody 自动就变成了 Object 啊 3、像上面的 type handler 不匹配正确的解决方式是? 4、有没有其他更优雅的方式?

    Ⅴ、要找工作的话,springboot 要学到什么程度?面试造航母,我很心虚啊 QAQ

    5 条回复    2019-05-22 14:41:58 +08:00
    epicq
        1
    epicq  
    OP
       2019-05-16 22:43:19 +08:00
    怎么编辑的时候排好的版,现在全乱了 QAQ
    oneisall8955
        2
    oneisall8955  
       2019-05-17 03:45:51 +08:00 via Android   ❤️ 1
    1,网上解释这几个基本说是有区别,但是项目上基本也是 entity,domain,pojo 随便建起来,都是用作持久层的对象的包名称。。。看项目习惯吧。但是 VO,DTO 还是比较统一的
    2 ! springboot 用起来最大的特点就是注解很多,xm 基本没有 xml 的存在了,老的 ssm,ssh,xml 满天飞
    3,简单用注解,复杂用 xml
    4,mybatis 太久没用了,jpa 用的比较多,这个不清楚你的问题是啥。。。
    5,找工作,按照经验,你不用会 springboot 都无所谓,会以前的 ssm 就行了,更直白的就是你理解 spring 在三层结构的地位,以及这三层怎么用就行了。感觉基础更加重要,如面向对象的特性的理解(设计模式),或者多线程,锁,数据结构算法,数据库原理,http 中的 TCP/IP 协议等这些才是重要内容
    yinzhili
        3
    yinzhili  
       2019-05-17 13:57:51 +08:00   ❤️ 1
    有一个好东西叫做 mybatis-generator。基本的 CRUD 代码都可以生成。自定义的就自己写。
    jack80342
        4
    jack80342  
       2019-05-22 14:41:33 +08:00   ❤️ 1
    你可以看看😀我翻译的 Spring Boot Reference Guide 2.0.0.RELEASE 的文档。
    jack80342
        5
    jack80342  
       2019-05-22 14:41:58 +08:00
    这是链接:github.com/jack80342
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3527 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 11:05 · PVG 19:05 · LAX 03:05 · JFK 06:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.