MyBatis Generator 数据Model属性对应Column获取插件
项目中我们有时需要获取数据Model对应数据库字段的名称,一般直接根据数据Model的属性就可以猜出数据库对应column的名字,可是有的时候当column使用了columnOverride或者columnRenamingRule时就需要去看数据库设计了,所以提供了这个插件获取model对应的数据库Column,具体实现可以参照我的mybatis-generator-plugin,下面是具体使用方法。
- 配合Example Criteria 增强插件(ExampleEnhancedPlugin)使用,这个插件还提供了asc()和desc()方法配合Example的orderBy方法效果更佳。
- 配合批量插入插件(BatchInsertPlugin)使用,批量插入会被增强成batchInsert(@Param(“list”) List list, @Param(“insertColumns”) XXX.Column … insertColumns)。
一、依然是在Mybatis Generator增加插件依赖(插件最新版本查看);
<!-- mybatis-generator 自动代码插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <!-- 配置文件 --> <configurationFile>src/main/resources/mybatis-generator.xml</configurationFile> <!-- 允许移动和修改 --> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <dependencies> <!-- jdbc 依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> <dependency> <groupId>com.itfsw</groupId> <artifactId>mybatis-generator-plugin</artifactId> <version>1.0.5</version> </dependency> </dependencies> </plugin>
二、mybatis-generator.xml配置文件中增加插件配置;
<!-- 数据Model属性对应Column获取插件 --> <plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"/>
三、使用;
public class Test { public static void main(String[] args) { // 1. 获取Model对应column String column = Tb.Column.createTime.value(); // 2. 配合Example Criteria 增强插件(ExampleEnhancedPlugin)使用orderBy方法 // old this.tbMapper.selectByExample( new TbExample() .createCriteria() .andField1GreaterThan(1) .example() .orderBy("field1 DESC, field3 ASC") ); // better this.tbMapper.selectByExample( new TbExample() .createCriteria() .andField1GreaterThan(1) .example() .orderBy(Tb.Column.field1.desc(), Tb.Column.field3.asc()) ); // 3. 配合批量插入插件(BatchInsertPlugin)使用实现按需插入指定列 List<Tb> list = new ArrayList<>(); list.add( new Tb.Builder() .field1(0) .field2("xx0") .field3(0) .field4(new Date()) .build() ); list.add( new Tb.Builder() .field1(1) .field2("xx1") .field3(1) .field4(new Date()) .build() ); // 这个会插入表所有列 this.tbMapper.batchInsert(list); // 下面按需插入指定列(类似于insertSelective) this.tbMapper.batchInsert(list, Tb.Column.field1, Tb.Column.field2, Tb.Column.field3, Tb.Column.createTime); } }