基于mybatis-generator 1.4
maven依赖:
<!--mybatis逆向工程依赖-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.dynamic-sql</groupId>
<artifactId>mybatis-dynamic-sql</artifactId>
<version>1.1.4</version>
</dependency>
在任意位置新建xml配置文件,如mybatis-generator-config.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>
<!--模式: MyBatis3DynamicSql-->
<context id="dsql" targetRuntime="MyBatis3DynamicSql">
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
<!--注释相关配置,此处type为自定义,类文件在文章最后-->
<commentGenerator type="cn.vanjs.config.MyCommentGenerator">
<!-- 是否 去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
<!-- <property name="suppressDate" value="true"/>-->
</commentGenerator>
<!-- 数据库配置 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai"
userId="root" password="******">
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
<property name="useJSR310Types" value="true"/>
</javaTypeResolver>
<!-- 实体类生成配置-->
<javaModelGenerator targetPackage="cn.vanjs.pojo.db" targetProject="src/main/java">
<!-- 实体类生成全参构造函数-->
<property name="constructorBased" value="true"/>
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
<property name="exampleTargetPackage" value="true"/>
</javaModelGenerator>
<!-- mapper接口生成配置,自动生成的放到单独的base包中-->
<javaClientGenerator targetPackage="cn.vanjs.mapper.base" targetProject="src/main/java">
<!-- <property name="enableSubPackages" value="true"/>-->
</javaClientGenerator>
<table tableName="t_user" domainObjectName="User" mapperName="UserMapperBase">
<!-- 同mybatis中的selectKey,sqlStatement是生成id的sql,MySql默认有对应的,可查-->
<generatedKey column="id" sqlStatement="MySql" identity="true" type="post"></generatedKey>
</table>
<table tableName="bank" domainObjectName="Bank" mapperName="BankMapperBase"/>
</context>
</generatorConfiguration>
注意各配置有先后顺序,不然会报错。执行以下代码即可生成(放到main函数中执行似乎不能生成....)
@Test
public void mybatisGenerate() throws Exception {
List<String> warnings = new ArrayList<>();
boolean overwrite = true; //覆盖文件
//mybatis-generator-config.xml配置文件绝对路径
File configFile = new File("D:\\mybatis-generator-config.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
自定义注释的类MyCommentGenerator
,实现CommentGenerator
接口,所有方法都是空实现。以达到不加任何注释的目的。
注意:尽管加了以下配置,但依旧会生成@Generated注释,作者在github mybatis-generator issue对此有回复。
<property name="suppressAllComments" value="true" />
package com.vanjs.config;
import org.mybatis.generator.api.CommentGenerator;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.*;
import org.mybatis.generator.api.dom.xml.XmlElement;
import java.util.Properties;
import java.util.Set;
public class MyCommentGenerator implements CommentGenerator {
@Override
public void addConfigurationProperties(Properties properties) {
}
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
}
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
}
@Override
public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
}
@Override
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
}
@Override
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean b) {
}
@Override
public void addEnumComment(InnerEnum innerEnum, 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 addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
}
@Override
public void addJavaFileComment(CompilationUnit compilationUnit) {
}
@Override
public void addComment(XmlElement xmlElement) {
}
@Override
public void addRootComment(XmlElement xmlElement) {
}
@Override
public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {
}
@Override
public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {
}
@Override
public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {
}
@Override
public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {
}
@Override
public void addClassAnnotation(InnerClass innerClass, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {
}
}