MyBatis Generatorcsdn 上 的讲解文章 MyBatis Generator系列
- 安装插件(easy-code)
- 直接在Idea中找到Plugins配置,然后搜索“Easy Code”,点击“install”进行安装,重启Idea便完成安装。
- 修改配置模板
- 打开settings—>easycode菜单
- 选择typeMapper菜单,编辑jdbcType和javaType 的对应关系
- 选择template菜单,编辑对应的模板
- global Config是全局的变量代码段配置
- 模板使用的是 【Velocity】语法
- 模板中的变量
##使用宏定义设置回调(保存位置与文件后缀)
#save("/model", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("model")
##设置回调(修改文件保存位置和文件名信息)
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))
##如果是mapper.xml文件
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
- 如果要生成适配通用mapper的xml 和 mapper对象
1. 修改mapper模板,添加接口继承 “extends Mapper<$tableInfo.name>”
2. 修改mapper模板,添加接口依赖引入“import tk.mybatis.mapper.common.Mapper;”
3. 修改Mapper模板和xml模板,将对应的内容模板注释掉,只留下文件的框架。
- 配置数据库
- 在IDEA中的database面板上添加当前项目使用到的数据库信息
- 打开连接,找到需要逆向的表,右击选择【generate code】
- 指定package(接口和类package信息) 和 path(xml文件的位置)
先选择对应的package,插件会自动将对应的文件路径填写到path中
生成文件时,会将path和第二步的文件夹进行拼接。
如path填写为 “F:/src/main/java” 则 model会写到“F:/src/main/java/model”中
- 插件问题
插件在使用过程中可能会出现文件生成了,但是在IDEA的文档树中看不到对应的文件。这个时候需要重新生成一下,IDEA提示文件已经存在。再点击忽略不继续生成即可。
说明文档:
属性
$author 设置中的作者 java.lang.String
$encode 设置的编码 java.lang.String
$modulePath 选中的module路径 java.lang.String
$projectPath 项目绝对路径 java.lang.String
对象
$tableInfo 表对象
obj 表原始对象 com.intellij.database.model.DasTable
name 表名(转换后的首字母大写)java.lang.String
comment 表注释 java.lang.String
fullColumn 所有列 java.util.List<ColumnInfo>
pkColumn 主键列 java.util.List<ColumnInfo>
otherColumn 其他列 java.util.List<ColumnInfo>,除主键以外的列
savePackageName 保存的包名 java.lang.String
savePath 保存路径 java.lang.String
saveModelName 保存的model名称 java.lang.String
columnInfo 列对象
obj 列原始对象 com.intellij.database.model.DasColumn
name 列名(首字母小写) java.lang.String
comment 列注释 java.lang.String
type 列类型(类型全名) java.lang.String
shortType 列类型(短类型) java.lang.String
custom 是否附加列 java.lang.Boolean
ext 附加字段(Map类型) java.lang.Map<java.lang.String, java.lang.Object>
$tableInfoList java.util.List<TableInfo>所有选中的表
$importList 所有需要导入的包集合 java.util.Set<java.lang.String>
回调
&callback
setFileName(String) 设置文件储存名字
setSavePath(String) 设置文件储存路径,默认使用选中路径
工具
$tool
firstUpperCase(String name) 首字母大写方法
firstLowerCase(String name) 首字母小写方法
getClsNameByFullName(String fullName) 通过包全名获取类名
getJavaName(String name) 将下划线分割字符串转驼峰命名(属性名)
getClassName(String name) 将下划线分割字符串转驼峰命名(类名)
hump2Underline(String str) 将驼峰字符串转下划线字符串
append(Object... objs) 多个数据进行拼接
newHashSet(Object... objs) 创建一个HashSet对象
newArrayList(Object... objs) 创建一个ArrayList对象
newLinkedHashMap() 创建一个LinkedHashMap()对象
newHashMap() 创建一个HashMap()对象
getField(Object obj, String fieldName) 获取对象的属性值,可以访问任意修饰符修饰的属性.配合debug方法使用.
call(Object... objs) 空白执行方法,用于调用某些方法时消除返回值
debug(Object obj) 调式方法,用于查询对象结构.可查看对象所有属性与public方法
serial() 随机获取序列化的UID
service(String serviceName, Object... param)远程服务调用
parseJson(String) 将字符串转Map对象
toJson(Object, Boolean) 将对象转json对象,Boolean:是否格式化json,不填时为不格式化。
toUnicode(String, Boolean) 将String转换为unicode形式,Boolean:是否转换所有符号,不填时只转换中文及中文符号。
$time
currTime(String format) 获取当前时间,指定时间格式(默认:yyyy-MM-dd HH:mm:ss)
$generateService
run(String, Map<String,Object>) 代码生成服务,参数1:模板名称,参数2:附加参数。