逆向工程代码生成

首先写一个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&lt;TmpEdLifeLog&gt;"/>
    </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包也要更换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值