Mybatis-plus自定义模板生成代码
参考:
自定义ID生成器 | MyBatis-Plus
自定义属性注入到模板 - MyBatis Plus 教程
MyBatis Plus 代码生成器(最新版本:V3.5.3)使用指南 - 掘金
mybatis plus generator 3.5.1 从了解到自定义定制VO、PO、DTO_mybatis-plus-generator 3.5.1-CSDN博客
https://www.cnblogs.com/aland-1415/p/12979440.html
java代码生成部分:
FastAutoGenerator.create
... ...
.injectionConfig(consumer -> {
/**自定义生成模板参数**/
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("yourpackage","com.crabdave");//定义一个变量,方便在模板中引用
consumer.customMap(paramMap);
/** 自定义 生成类**/
Map<String, String> customFile = new HashMap<>();
CustomFile.Builder builder = new CustomFile.Builder();
//生成到dto目录下
builder.packageName("dto").fileName("DTO.java").templatePath("/templates/DTO.java.vm")
.filePath("D:\\workspace\\yourproject\\src\\main\\java\\com\\crabdave\\mode")
.enableFileOverride();//覆盖生成
consumer.customFile(builder.build());
})
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.5</version>
</dependency>
模板部分:
DTO.java.vm模板文件里引用变量${yourpackage}
package ${yourpackage}.dto;
时间类型加两个格式注解
#if("$!field.propertyType" == "LocalDateTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private ${field.propertyType} ${field.propertyName};
#end
首字母大写
capitalName生成的首字母是大写,但对于aBcde这种转换不了,但lombok会转成ABcd
#foreach($field in ${table.fields})
get${field.capitalName}
#end
其它
实体字段转数据表字段功能接口
Lambda表达式获取传入的方法引用的方法名_该方法仅能传入 lambda 表达式产生的合成类-CSDN博客
com.baomidou.mybatisplus.core.toolkit.StringUtils.camelToUnderline("userName");
返回 user_name
MyBatisPlus使用LambdaQueryWrapper时要注意防止出现“Didn‘t start with ‘is‘, ‘get‘ or ‘set‘“错误
"MyBatisPlus的条件构造器不会真的去调用SFunction这个函数式接口而是只解析实际的方法名.如果解析的是Lambbda表达式,那么方法名跟数据库的列名匹配不上就会报错; 如果是方法引用那么方法名通过is/gey/set规则就能找到相应的字段名然后在根据规则转换成数据库表的列名"
MyBatisPlus使用LambdaQueryWrapper时要注意防止出现“Didn‘t start with ‘is‘, ‘get‘ or ‘set‘“错误_mybatis_爱游泳的老白-华为云开发者联盟
关于lambda写法的疑问 · Issue #3986 · baomidou/mybatis-plus · GitHub