1
coder2cooker 2018-01-02 12:50:31 +08:00 1
好像有个逆向工程支持一对多关联关系的插件,可以去 google 下。
如果每次增量修改的内容很少,手工编写代码是不是还方便一些? |
2
lhx2008 OP @coder2cooker 但是还是感觉治标不治本,如果没有什么好办法就只能是自己手改了
|
3
kulove 2018-01-02 13:08:26 +08:00
为什么要手工改它生成的文件?手工的单独写个啊
|
5
paragon 2018-01-02 13:39:48 +08:00
生成的和自己写的分开 自动生成的那部分用 CI 自动构建
|
7
flowerwrong 2018-01-02 13:41:13 +08:00 2
我觉得三个方案:
1. 再加一层 modle extension,继承 model,父 modle 里面只放模板内容,自动生产且不变动,子 model 随意。 2. 自定义 mybatis-generator,把表间关系那些都自动生成。 3. 1 + 2 我就是这么干的。 |
9
lhx2008 OP |
10
lhx2008 OP @flowerwrong 实际撸的时候又有问题,父类是模板内容,子类继承模板内容,但是 mapper 里面返回的是父类,怎么转到子类呢?
|
11
flowerwrong 2018-01-02 17:24:46 +08:00
@lhx2008 通用 mapper 和自定义 mapper 分开。
|
12
flowerwrong 2018-01-02 17:33:18 +08:00
@lhx2008 我项目比较复杂,完全把自动生成的东西和自定义的分开的。model,通用 mapper (参考插件 https://github.com/itfsw/mybatis-generator-plugin )都是生成的。如果需要 join 表自定义查询等,就新建 mapper 继承。该返回哪个 model 看需要,也可能定义新的 dto 返回。
|
13
lhx2008 OP @flowerwrong 对,这样子就弄等于就是从 sql 开始弄了两套了,虽然用继承可以少一点代码,但是还是很麻烦。
我的是小项目,想快速开发,我想是 DAO 层不动直接用生成的,然后直接在 Service 层做一些关联查询还有一些瞬时数据插入之类的。 但是自动生成的 model 又和 mapper 绑定了,直接在生成的 model 追加瞬时变量就可以满足我的需求。 所以现在到底要不要直接改 model 我也很纠结。 |
14
lhx2008 OP @flowerwrong 按照你的弄的话就是还要完全重写一个 mapper 的接口和一个 xml 来继承自动生成的,包括 get list 方法都要写一遍,但是我只是想多加几个瞬时属性
|
15
18583826786 2018-01-02 19:43:36 +08:00 via Android 1
pojo 中添加包装类,mapper 里在原来的 xml 中添加 sql 和创建新的 xml
|
16
lhx2008 OP 自己摸索了个几个小时,找到一个比较好的方法,
让自己定义的 extension 当父类,然后在 generator 中设置<property name="rootClass" value="pojo.extension.xxxExtension"/>,就可以自动让生成出来类的继承自己的 Extension 然后如果要写自己写 mapper 也 extension 就好,非常简单 |
17
xiaoyangsa 2018-01-02 21:22:39 +08:00
。。我自己写了个生成.
lz 改 pojo 是不是和我一样,喜欢在 pojo 里面定义些类型常量。。 比如 数据库字段有个 int type 然后我 pojo 里会有个 String[] typeNameArray={"类型 1","类型 2"}; 然后再构造一个 String typeName; get。。。set。。 这样来方便每次前端的显示。。 一直感觉这样不是个好习惯。讨论下。。 |
18
lhx2008 OP @xiaoyangsa
主要是为了定义常量和一对多关联。定义常量 我一般是用 Enum,哈哈。但是主要是一对多等等关联 mybatis-generator 不提供,自己写又要单元测试测半天,我也不知道各位大佬用 mybatis-generator 怎么优雅地解决关联管理的。 主要是以前用 hibernate 的惯性,只要一个 @OnetoMany 就可以定义一对多,自动 fetch,很爽,定义 @Transient 就可以随便加在前端显示的内容 但是换了 mybatis 之后,特别是用了 mybatis-generator 之后就啥也没有了,没 @OnetoMany,没 @Transient,于是就只能自己造轮子了,但是又不想破坏 mybatis-generator 生成的文件,于是研究了一天。 |
19
xiaoyangsa 2018-01-02 22:03:10 +08:00
@lhx2008
谢谢回复。我现在也是改用 Enum,感觉没有直接写方便。哈哈~ |
20
icegreen 2018-01-02 22:29:18 +08:00
推荐用 jpa. 完全自动化,简单项目下, 没有 sql, 没有建表语句, 很安逸.
|