##1.导入maven依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
##2.创建generatorConfig.xml文件 并修改文件路径的和MySQL的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="MysqlContext" targetRuntime="com.wjh.generationcode.GeneratorConfiguration.InsoIntrospectedTable" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<commentGenerator type="com.wjh.generationcode.GeneratorConfiguration.MyCommentGenerator">
<property name="suppressDate" value="false"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://********:5432/sc?charSet=utf-8" userId="postgres"
password="postgres">
</jdbcConnection>
<javaModelGenerator targetPackage="test.model" targetProject="C:\soft\ideworkspace\generationcode\src\main\java">
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="test.xml" targetProject="C:\soft\ideworkspace\generationcode\src\main\java"/>
<javaClientGenerator type="ANNOTATEDMAPPER" targetPackage="test.dao" targetProject="C:\soft\ideworkspace\generationcode\src\main\java"/>
<!-- 需要生成代码的表名,每个表一个table节点如下 -->
<table tableName="user" domainObjectName="User"/>
</context>
</generatorConfiguration>
##3.自定义mybatis逆向项工程
实现IntrospectedTableMyBatis3SimpleImpl.calculateXmlMapperGenerator()这个方法是mybatis成成xml的方法 再这个基础上通过模板引擎freemarker 生成我们 controller,service和serviceImpl代码
public class InsoIntrospectedTable extends IntrospectedTableMyBatis3SimpleImpl {
/**
* XML的生成方法
* @param javaClientGenerator
* @param warnings
* @param progressCallback
*/
@Override
protected void calculateXmlMapperGenerator(AbstractJavaClientGenerator javaClientGenerator, List<String> warnings, ProgressCallback progressCallback) {
//这个添加自定模板生成方法
this.xmlMapperGenerator = new MySimpleXMLMapperGenerator();
this.initializeAbstractGenerator(this.xmlMapperGenerator, warnings, progressCallback);
}
}
public class MySimpleXMLMapperGenerator extends SimpleXMLMapperGenerator {
static FileUrl fileUrl;
@Override
protected XmlElement getSqlMapElement() {
FullyQualifiedTable table = this.introspectedTable.getFullyQualifiedTable();
this.progressCallback.startTask(Messages.getString("Progress.12", new String[]{
table.toString()}));
XmlElement answer = new XmlElement("mapper");
String namespace = this.introspectedTable.getMyBatis3SqlMapNamespace();
answer.addAttribute(new Attribute("namespace", namespace));
this.context.getCommentGenerator().addRootComment(answer);
this.addResultMapElement(answer);
this.addDeleteByPrimaryKeyElement(answer);
this.addInsertElement(answer);
this.addUpdateByPrimaryKeyElement(answer);
this.addSelectByPrimaryKeyElement(answer);
this.addSelectAllElement(answer);
//this.addCountListElement(answer);
// this.addQueryPageListElement(answer);
//这个读取配置文件 controller,service和serviceImpl 生成的路径配置
getProperties();
fileUrl.setBeanurl(introspectedTable.getBaseRecordType());
try {
genDAO( introspectedTable.getTableConfiguration().getDomainObjectName(),"Integer","id");
genController( introspectedTable.getTableConfiguration().getDomainObjectName(),"Integer","id");
genService( int