Mybatis Generator 官方简称MBG,中国IT行业也经常称之为Mybatis逆向工程(由数据库生成Java代码)。提供了丰富的自定义生成文件的方法。不直接修改源代码的情况下,自定义生成文件主要通过以下几种方式:更改配置、替换生成器、编写插件。
配置
<context>标签指定生成模式,可生成简洁版,普通版XML版,无XML采用注解版<
<javaModelGenerator>标签的rootClass属性,可为模型类添加父类。
<javaClientGenerator>标签的rootInterface属性,指定Dao的父接口。
替换生成器
替换注释生成器
<commentGenerator type="com.custom.CustomCommentGenerator"></commentGenerator>
替换Dao生成器
<javaClientGenerator type="com.custom.CustomJavaClientGenerator></javaClientGenerator>
插件概述
自定义插件需实现Plugin接口,一般继承自PluginAdapter类
插件工作可分为三个阶段:validate方法,读取配置文件并验证是否需要执行此插件;initialized方法,生成文件前的初始化回调;xxxxxxxGenerated方法,生成某个具体元素前的回调。
如果有多个插件,先调用所有插件的validate方法,再调用所有插件的initialized方法,再调用所有插件的xxxxxxxGenerated方法
xxxxxxxGenerated提供几乎所有生成元素的回调,比如模型类文件生成,模型字段生成,模型方法生成,dao方法生成,xml标签回调,其他文件回调。这个方法return false, 将会阻止其它插件的该方法被调用。所以要注意插件的顺序。
字符串转换成Java类:new FullyQualifiedJavaType("com.xx.yy.Zz");
FullyQualifiedJavaType转换成字符串:getShortName()
表在MBG中虚拟结构:IntrospectedTable,可读可写
表字段在MBG中的虚拟代表:IntrospectedColumn
获取<table>中的配置:introspectedTable.getTableConfiguration().getProperty("xxxx");
不生成Dao中的方法:interfaze.getMethods().clear();
添加父接口:interfaze.addSuperInterface(fqjt);
导入类:interfaze.addImportedType(imp);
用Maven使用MBG,加载类库引用
<plugin>标签下配置<dependencies>标签