开发环境:
- springboot 2.4.3
- baomidou 3.4.0
- mybatis plus 3.4.0
- jdk8
问题描述:
1、mybatis 使用baomidou 插件,EasyCode自动生成实体类,但字段都是全部小写的,不太符合编码规范。
2、mysql表字段全是驼峰,生成的实体类字段全是小写,使用的默认的Mybatis 插件模板;
操作步骤
模板代码
原因分析:
经网上搜索一轮,基本上确定是easy code插件模板,默认使用$!column.obj.name
函数,这样如果db表字段是下划线会自动转为驼峰,如果db的字段本来就是驼峰,则会全部转为小写,所以我们需要修改一下模板。
#foreach($column in $tableInfo.fullColumn)#if(${column.comment})/*** ${column.comment}.*/#else/*** ${column.name}.*/#endprivate $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
解决方案:
复制一份模板,并增加以下配置。
完整配置如下:
##导入宏定义
$!define## 改写列名,避免全小写
#foreach($column in $tableInfo.fullColumn)#if(!$!column.obj.name.contains("_"))## 数据库字段名是驼峰命名$!column.setName($!column.obj.name)#else## 数据库字段名是下划线的方式命名$!column.setName($tool.getJavaName($!column.obj.name))#end
#end##保存文件(宏定义)
#save("/model", ".java")##包路径(宏定义)
#setPackageSuffix("model")##自动导入包(全局变量)
$!autoImport
import lombok.Data;
import java.io.Serializable;##表注释(宏定义)
#tableComment("表实体类.")
@Data
public class $!{tableInfo.name} implements Serializable {private static final long serialVersionUID = $!tool.serial();#foreach($column in $tableInfo.fullColumn)#if(${column.comment})/*** ${column.comment}.*/#else/*** ${column.name}.*/#endprivate $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end}