|
28 | 28 | * [~~Table增加前缀插件(TablePrefixPlugin)~~](#11-table增加前缀插件) |
29 | 29 | * [~~Table重命名插件(TableRenamePlugin)~~](#12-table重命名插件) |
30 | 30 | * [自定义注释插件(CommentPlugin)](#13-自定义注释插件) |
31 | | -* [增量插件(IncrementsPlugin)](#14-增量插件) |
| 31 | +* [~~增量插件(IncrementsPlugin)~~](#14-增量插件) |
32 | 32 | * [查询结果选择性返回插件(SelectSelectivePlugin)](#15-查询结果选择性返回插件) |
33 | 33 | * [~~官方ConstructorBased配置BUG临时修正插件(ConstructorBasedBugFixPlugin)~~](#16-官方constructorbased配置bug临时修正插件) |
34 | 34 | * [乐观锁插件(OptimisticLockerPlugin)](#17-乐观锁插件) |
35 | 35 | * [表重命名配置插件(TableRenameConfigurationPlugin)](#18-表重命名配置插件) |
36 | 36 | * [Lombok插件(LombokPlugin)](#19-Lombok插件) |
37 | 37 | * [数据ModelCloneable插件(ModelCloneablePlugin)](#20-数据ModelCloneable插件) |
38 | 38 | * [状态枚举生成插件(EnumTypeStatusPlugin)](#21-状态枚举生成插件) |
| 39 | +* [增量插件(IncrementPlugin)](#22-增量插件) |
39 | 40 |
|
40 | 41 | --------------------------------------- |
41 | 42 | Maven引用: |
@@ -1251,6 +1252,8 @@ Mybatis Generator是原生支持自定义注释的(commentGenerator配置type |
1251 | 1252 | ### 14. 增量插件 |
1252 | 1253 | 为更新操作生成set filedxxx = filedxxx +/- inc 操作,方便某些统计字段的更新操作,常用于某些需要计数的场景; |
1253 | 1254 |
|
| 1255 | +>warning:该插件在整合LombokPlugin使用时会生成大量附加代码影响代码美观,强力建议切换到新版插件[IncrementPlugin](#22-增量插件); |
| 1256 | +
|
1254 | 1257 | 插件: |
1255 | 1258 | ```xml |
1256 | 1259 | <xml> |
@@ -1400,7 +1403,7 @@ public class Test { |
1400 | 1403 | ``` |
1401 | 1404 | ### 18. 表重命名配置插件 |
1402 | 1405 | 官方提供了domainObjectRenamingRule(官方最新版本已提供)、columnRenamingRule分别进行生成的表名称和对应表字段的重命名支持,但是它需要每个表单独进行配置,对于常用的如表附带前缀“t_”、字段前缀“f_”这种全局性替换会比较麻烦。 |
1403 | | -该插件提供了一种全局替换机制,当表没有单独指定domainObjectRenamingRule、columnRenamingRule时采用全局性配置。同时该插件会修复官方domainObjectRenamingRule的bug(没有进行正确的首字母大写)。 |
| 1406 | +该插件提供了一种全局替换机制,当表没有单独指定domainObjectRenamingRule、columnRenamingRule时采用全局性配置。 |
1404 | 1407 | 同时插件提供clientSuffix、exampleSuffix、modelSuffix来修改对应生成的类和文件的结尾(之前issue中有用户希望能把Mapper替换成Dao)。 |
1405 | 1408 | - 全局domainObjectRenamingRule |
1406 | 1409 | ```xml |
@@ -1460,11 +1463,10 @@ public class Test { |
1460 | 1463 | ### 19. Lombok插件 |
1461 | 1464 | 使用Lombok的使用可以减少很多重复代码的书写,目前项目中已大量使用。 |
1462 | 1465 | 但Lombok的@Builder对于类的继承支持很不好,最近发现新版(>=1.18.2)已经提供了对@SuperBuilder的支持,所以新增该插件方便简写代码。 |
1463 | | ->warning: 目前很多IDE工具对@SuperBuilder支持不是很好,虽不影响正常使用,但是开发时很不友好,暂时可以使用ModelBuilderPlugin代替该功能。 |
1464 | 1466 |
|
1465 | 1467 | >warning1: @Builder注解在Lombok 版本 >= 1.18.2 的情况下才能开启,对于存在继承关系的model会自动替换成@SuperBuilder注解。 |
1466 | 1468 |
|
1467 | | ->warning2: 配合插件IncrementsPlugin 并且 @Builder开启的情况下,因为@SuperBuilder的一些限制, |
| 1469 | +>warning2: 配合插件IncrementsPlugin(已不推荐使用,请使用新版[IncrementPlugin](#22-增量插件)解决该问题) 并且 @Builder开启的情况下,因为@SuperBuilder的一些限制, |
1468 | 1470 | 插件模拟Lombok插件生成了一些附加代码可能在某些编译器上会提示错误,请忽略(Lombok = 1.18.2 已测试)。 |
1469 | 1471 |
|
1470 | 1472 | ```xml |
@@ -1596,3 +1598,35 @@ public class Tb { |
1596 | 1598 | } |
1597 | 1599 | } |
1598 | 1600 | ``` |
| 1601 | +### 22. 增量插件 |
| 1602 | +为更新操作生成set filedxxx = filedxxx +/- inc 操作,方便某些统计字段的更新操作,常用于某些需要计数的场景,需配合([ModelColumnPlugin](#8-数据model属性对应column获取插件))插件使用; |
| 1603 | + |
| 1604 | +插件: |
| 1605 | +```xml |
| 1606 | +<xml> |
| 1607 | + <!-- 增量插件 --> |
| 1608 | + <plugin type="com.itfsw.mybatis.generator.plugins.IncrementPlugin" /> |
| 1609 | + |
| 1610 | + <table tableName="tb"> |
| 1611 | + <!-- 配置需要进行增量操作的列名称(英文半角逗号分隔) --> |
| 1612 | + <property name="incrementColumns" value="field1,field2"/> |
| 1613 | + </table> |
| 1614 | +</xml> |
| 1615 | +``` |
| 1616 | +使用: |
| 1617 | +```java |
| 1618 | +public class Test { |
| 1619 | + public static void main(String[] args) { |
| 1620 | + // 在构建更新对象时,配置了增量支持的字段会增加传入增量枚举的方法 |
| 1621 | + Tb tb = Tb.builder() |
| 1622 | + .id(102) |
| 1623 | + .field4(new Date()) |
| 1624 | + .build() |
| 1625 | + .increment(Tb.Column.field1.inc(1)) // 字段1 统计增加1 |
| 1626 | + .increment(Tb.Column.field2.dec(2)); // 字段2 统计减去2 |
| 1627 | + // 更新操作,可以是 updateByExample, updateByExampleSelective, updateByPrimaryKey |
| 1628 | + // , updateByPrimaryKeySelective, upsert, upsertSelective等所有涉及更新的操作 |
| 1629 | + this.tbMapper.updateByPrimaryKey(tb); |
| 1630 | + } |
| 1631 | +} |
| 1632 | +``` |
0 commit comments