首先写一个xml配置文件,放在resources下面
<?xml version="1.0" encoding="UTF-8"?> <jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://10.204.209.137:3306/is_cmp"
userId="is_cmp"
password="is_cmp123.com" >
<property name="useInformationSchema" value="true" />
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--配置实体bean -->
<javaModelGenerator targetPackage="com.fcbox.cmp.entity.other"
targetProject="D:\project\is-cmp-server\is-cmp-server\cmp-api\src\main\java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--配置实体bean的sql.xml -->
<sqlMapGenerator targetPackage="sqlmapper" targetProject="D:\project\is-cmp-server\is-cmp-server\cmp-api\src\main\resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--配置实体map接口(dao) -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.fcbox.cmp.mapper.other"
targetProject="D:\project\is-cmp-server\is-cmp-server\cmp-api\src\main\java" >
<property name="enableSubPackages" value="false"/>
<property name="rootInterface" value="com.baomidou.mybatisplus.core.mapper.BaseMapper<TmpEdLifeLog>"/>
</javaClientGenerator>
<table tableName="tmp_ed_life_log"
domainObjectName="TmpEdLifeLog"
enableDeleteByExample="false" enableCountByExample="false" enableUpdateByExample="false"
enableSelectByExample="false" >
<generatedKey column="ID" sqlStatement="Mysql" identity="true"/>
</table>
</context>
注意:配置中实体类和mapper和xml文件的生成的路径为绝对路径。
然后创建一个工具类
package com.fcbox.cmp.utils;
import org.mybatis.generator.api.;
import org.mybatis.generator.api.dom.java.;
import org.mybatis.generator.api.dom.kotlin.KotlinFile;
import org.mybatis.generator.api.dom.kotlin.KotlinFunction;
import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;
public class MyCommentGenerator extends PluginAdapter implements CommentGenerator {
@Override
public void addConfigurationProperties(Properties properties) {
// Override方法
}
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
field.addJavaDocLine("@ApiModelProperty(value = \"" + introspectedColumn.getRemarks() + " \")");
if (introspectedColumn.isIdentity()) {
field.addJavaDocLine("@TableId(value = \"" + introspectedColumn.getActualColumnName() + "\",type = IdType.AUTO)");
}
}
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
// Override方法
}
@Override
public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
//添加domain的import
topLevelClass.addImportedType("com.baomidou.mybatisplus.annotation.TableId");
topLevelClass.addImportedType("com.baomidou.mybatisplus.annotation.IdType");
topLevelClass.addImportedType("com.baomidou.mybatisplus.annotation.TableName");
topLevelClass.addImportedType("io.swagger.annotations.ApiModel");
topLevelClass.addImportedType("io.swagger.annotations.ApiModelProperty");
topLevelClass.addImportedType("lombok.*");
// 添加注释
topLevelClass.addJavaDocLine("");
topLevelClass.addJavaDocLine("/**");
topLevelClass.addJavaDocLine(" * Created by Mybatis Generator on " + date2Str(new Date()));
topLevelClass.addJavaDocLine(" */");
//添加domain的注解
topLevelClass.addAnnotation("@Getter");
topLevelClass.addAnnotation("@Setter");
topLevelClass.addAnnotation("@Builder");
topLevelClass.addAnnotation("@NoArgsConstructor");
topLevelClass.addAnnotation("@AllArgsConstructor");
topLevelClass.addAnnotation("@ApiModel(description = \"" + introspectedTable.getRemarks() + "\")");
topLevelClass.addAnnotation("@TableName(\"" + introspectedTable.getFullyQualifiedTable() + "\")");
}
private String date2Str(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
return sdf.format(date);
}
@Override
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
// Override方法
}
@Override
public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean b) {
// Override方法
}
@Override
public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {
// Override方法
}
@Override
public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
// Override方法
}
@Override
public void addSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
// Override方法
}
@Override
public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
// Override方法
}
@Override
public void addJavaFileComment(CompilationUnit compilationUnit) {
// Override方法
}
@Override
public void addComment(XmlElement xmlElement) {
// Override方法
}
@Override
public void addRootComment(XmlElement xmlElement) {
// Override方法
}
@Override
public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {
// Override方法
}
@Override
public void addGeneralMethodAnnotation(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {
// Override方法
}
@Override
public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {
// Override方法
}
@Override
public void addFieldAnnotation(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn, Set<FullyQualifiedJavaType> set) {
// Override方法
}
@Override
public void addClassAnnotation(InnerClass innerClass, IntrospectedTable introspectedTable, Set<FullyQualifiedJavaType> set) {
// Override方法
}
public static void main(String[] args) throws Exception {
// 执行中的异常信息会保存在warnings中
List<String> warnings = new ArrayList<String>();
// true:生成的文件覆盖之前的
boolean overwrite = true;
// 读取配置,构造 Configuration 对象.
// 如果不想使用配置文件的话,也可以直接来 new Configuration(),然后给相应属性赋值.
//指向项目中xml文件的绝对路径
File configFile = new File("D:\\project\\is-cmp-server\\is-cmp-server\\cmp-web\\src\\main\\resources\\generatorConfig.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);
for (String warning : warnings) {
System.out.println(warning);
}
}
@Override
public boolean modelSetterMethodGenerated(Method method,
TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
IntrospectedTable introspectedTable,
Plugin.ModelClassType modelClassType) {
// 实体类不生成setter方法
return false;
}
@Override
public boolean modelGetterMethodGenerated(Method method,
TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
IntrospectedTable introspectedTable,
Plugin.ModelClassType modelClassType) {
//实体类不生成getter方法
return false;
}
@Override
public boolean validate(List<String> warnings) {
return true;
}
@Override
public boolean clientGenerated(Interface interfaze, IntrospectedTable introspectedTable) {
//Mapper文件的注释
interfaze.addJavaDocLine("/**");
interfaze.addJavaDocLine(" * Created by Mybatis Generator on " + date2Str(new Date()));
interfaze.addJavaDocLine(" */");
return true;
}
/* @Override
public boolean clientUpdateAllColumnsMethodGenerated(KotlinFunction kotlinFunction, KotlinFile kotlinFile, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean sqlMapUpdateByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
return false;
}*/
public boolean clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated(Method method, Interface interfaze, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
return false;
}
@Override
public boolean clientInsertMethodGenerated(Method method, Interface interfaze,
IntrospectedTable introspectedTable) {
// mapper接口类不生成insert方法,因为与mybatis-plus插件 有冲突
return false;
}
@Override
public boolean sqlMapInsertElementGenerated(XmlElement element,
IntrospectedTable introspectedTable) {
// mapper sql文件不生成insert sql,因为与mybatis-plus插件有冲突
return false;
}
}
注意:
//指向项目中xml文件的绝对路径
File configFile = new File(“D:\project\is-cmp-server\is-cmp-server\cmp-web\src\main\resources\generatorConfig.xml”);
改好路径之后,点击运行,表就变成java基础代码了。非常的方便。
需要你的项目支持mybatis和mysql哦。数据库不一样的话,配置文件中的驱动jar包也要更换