通过generatorConfig配置文件,自动生成DAO层代码
1、实现批量插入sql自动生成
2、实现字段注释关联表comment
maven依赖
<!--更高級版本暂不支持批量插入生成-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.itfsw</groupId>
<artifactId>mybatis-generator-plugin</artifactId>
<version>1.3.8</version>
</dependency>
<build>
<plugins>
<!-- mybatis-generator自动生成代码插件 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
</plugin>
</plugins>
</build>
generatorConfig.xml
<?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>
<!--<classPathEntry location="C:\Users\gangling\.m2\repository\mysql\mysql-connector-java\5.1.25\mysql-connector-java-5.1.25.jar" />-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--批量插入sql-->
<plugin type="com.itfsw.mybatis.generator.plugins.BatchInsertPlugin"></plugin>
<plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"></plugin>
<!--生成字段注释 MySQLCommentGenerator方法为自定义方法,注意存放路径-->
<commentGenerator type="com.a.b.c.MySQLCommentGenerator">
<!-- <commentGenerator > -->
<property name="suppressAllComments" value="false" />
<property name="suppressDate" value="false" />
<property name="addRemarkComments" value="true"/>
<property name="author" value="mybatis-gen"/>
<property name="dateFormat" value="yyyy-MM-dd"/>
</commentGenerator>
<!--数据库连接-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL=""
userId=""
password="">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--model 调整为你自己存放model的路径-->
<javaModelGenerator targetPackage="com.a.b.c.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--sql 调整为你自己存放model的路径-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--mapper 调整为你自己存放model的路径-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.a.b.c.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--表名-->
<table schema="tfaces" tableName="scs_site_stock_amount"
enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false">
<generatedKey column="ID" sqlStatement="SELECT LAST_INSERT_ID()" identity="true" />
</table>
</context>
</generatorConfiguration>
MySQLCommentGenerator方法
package com.gangling.scsh5.generator;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.InnerClass;
import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import java.text.SimpleDateFormat;
import java.util.Properties;
public class MySQLCommentGenerator extends DefaultCommentGenerator {
private Properties properties;
public MySQLCommentGenerator() {
properties = new Properties();
}
@Override
public void addConfigurationProperties(Properties properties) {
// 获取自定义的 properties
this.properties.putAll(properties);
}
@Override
public void addClassComment(InnerClass innerClass,
IntrospectedTable introspectedTable) {
String author = properties.getProperty("author");
String dateFormat = properties.getProperty("dateFormat", "yyyy-MM-dd");
SimpleDateFormat dateFormatter = new SimpleDateFormat(dateFormat);
}
@Override
public void addFieldComment(Field field,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
// // 获取列注释
String remarks = introspectedColumn.getRemarks();
field.addJavaDocLine("/**");
field.addJavaDocLine(" * " + introspectedColumn.getActualColumnName());
field.addJavaDocLine(" * " + remarks);
field.addJavaDocLine(" */");
}
@Override
public void addGeneralMethodComment(Method method,
IntrospectedTable introspectedTable) {
}
@Override
public void addGetterComment(Method method,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
}
@Override
public void addSetterComment(Method method,
IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
}
@Override
public void addComment(XmlElement xmlElement) {
}
}
MybatisGenerator 方法
package com.gangling.scsh5.generator;
import org.mybatis.generator.api.ShellRunner;
public class MybatisGenerator {
/**
* 如果你的main方法启动后 没有达到预期的效果,而是
* The specified target project directory src/main/resources does not exist
* The specified target project directory src/main/java does not exist
* The specified target project directory src/main/java does not exist
*
* 报以上的错是因为 idea 多module 工程 user.dir 还是 工程的根目录,工程的根目录没有 src/main/resources 这些目录
* 所以报错。我们需要做的是 将这个user.dir 设置成 demo/demo-persistence
* 点击 EDIT CONFIGURATION ,里面有一列是 Working directory ,
* 再加上 demo-persistence 即可
* 或者可以直接写 $ModuleFileDir$ 也一样
*
*
* 默认会生成batchInsert语句,如果不需要,可以注释掉 generatorConfig.xml 里面的
* <plugin type="com.itfsw.mybatis.generator.plugins.BatchInsertPlugin"></plugin>
* <plugin type="com.itfsw.mybatis.generator.plugins.ModelColumnPlugin"></plugin>
*
* @param args
*/
public static void main(String[] args) {
System.out.println(System.getProperty("user.dir"));
String file = MybatisGenerator.class.getClassLoader().getResource("generatorConfig.xml").getPath();
String arg = "-configfile " + file + " -overwrite";
ShellRunner.main(arg.split(" "));
}
}
执行时替换配置文件中的表名称,运行MybatisGenerator中的main方法即可
MybatisGenerator类配置Working directory