Mybatis Generator(MBG) -- Java 配置替代xml文件

Mybatis Generator 是mybatis 逆向插件,可以通过数据库的表逆向生成pojo类,以及dao层和相应的mapper.xml文件。十分的方便,能很有效的减少代码书写量。不过一般都是使用配置xml的方式,通过maven的方式来运行的。具体请参看我上一篇文章:https://www.jianshu.com/p/b4609ca6ca33

我也是找了好久才再mybatis的官网上找到了有关纯java类执行generator的方式。具体看连接如下:http://www.mybatis.org/generator/running/runningWithJava.html

image.png

看到了我红线标注的地方了么,这里才是有关java配置generatorConfig.xml的地方。可惜的是,忽略了很多的信息,对于我这种新手来说。最不擅长看官方文档了,所以很难才能找到这里。
查看文档,大体上官方文档给出的意思是,在相应的方法中,将下面的代码写入,然后再在注释的地方进行详细的配置。我具体的java配置如下:

package com.snowy.fastgov.generator;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.*;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GeneratorConfig {

private String driverClass = "com.mysql.cj.jdbc.Driver";

private String connectionURL = "jdbc:mysql://localhost:3306/any?useUnicode=true&characterEncoding=utf8";

private String userId = "root";

private String password = "root";


private String targetPackage = "com.snowy.fastgov.common.entity";

private String targetProject = "src/main/java";


private String sqlTargetPackage = "mapping";

private String sqlTargetProject = "src/main/resources";


private String daoTargetPackage = "com.snowy.fastgov.common.mapper";

private String daoTargetProject = "src/main/java";

private String classpathEntry="E:\\IdeaProject\\fastgov\\src\\main\\resources\\webapp\\lib\\mysql-connector-java-5.1.43.jar";


public static void main(String[] args){
    GeneratorConfig generatorConfig = new GeneratorConfig();
    TableEntity tableEntity = new TableEntity();
    tableEntity.setTableName("good");
    tableEntity.setDomainObjectName("Good");
    List<TableEntity> list = new ArrayList<>();
    list.add(tableEntity);
    generatorConfig.generatorConfig(list);
}

public void generatorConfig(List<TableEntity> tableList) {

    List<String> warnings = new ArrayList<String>();
    boolean overwrite = true;
    Context context = new Context(ModelType.CONDITIONAL);
    context.setTargetRuntime("MyBatis3");
    context.setId("mysql");
    

    CommentGeneratorConfiguration commentGeneratorConfiguration = new CommentGeneratorConfiguration();
    commentGeneratorConfiguration.addProperty("suppressDate","true");
    commentGeneratorConfiguration.addProperty("suppressAllComments","true");

    /*数据库链接URL,用户名、密码 */
    JDBCConnectionConfiguration jdbcConnectionConfiguration = new JDBCConnectionConfiguration();
    jdbcConnectionConfiguration.setDriverClass(driverClass);
    jdbcConnectionConfiguration.setConnectionURL(connectionURL);
    jdbcConnectionConfiguration.setUserId(userId);
    jdbcConnectionConfiguration.setPassword(password);

    JavaTypeResolverConfiguration javaTypeResolverConfiguration = new JavaTypeResolverConfiguration();
    javaTypeResolverConfiguration.addProperty("forceBigDecimals","false");

    /*生成模型的包名和位置*/
    JavaModelGeneratorConfiguration javaModelGeneratorConfiguration = new JavaModelGeneratorConfiguration();
    javaModelGeneratorConfiguration.setTargetPackage(targetPackage);
    javaModelGeneratorConfiguration.setTargetProject(targetProject);
    javaModelGeneratorConfiguration.addProperty("enableSubPackages","true");
    javaModelGeneratorConfiguration.addProperty("trimStrings","true");

    /*生成映射文件的包名和位置*/
    SqlMapGeneratorConfiguration sqlMapGeneratorConfiguration = new SqlMapGeneratorConfiguration();
    sqlMapGeneratorConfiguration.setTargetPackage(sqlTargetPackage);
    sqlMapGeneratorConfiguration.setTargetProject(sqlTargetProject);
    sqlMapGeneratorConfiguration.addProperty("enableSubPackages","true");

    /*生成DAO的包名和位置*/
    JavaClientGeneratorConfiguration javaClientGeneratorConfiguration = new JavaClientGeneratorConfiguration();
    javaClientGeneratorConfiguration.setConfigurationType("XMLMAPPER");
    javaClientGeneratorConfiguration.setTargetPackage(daoTargetPackage);
    javaClientGeneratorConfiguration.setTargetProject(daoTargetProject);
    javaClientGeneratorConfiguration.addProperty("enableSubPackages","true");


    context.setCommentGeneratorConfiguration(commentGeneratorConfiguration);
    context.setJdbcConnectionConfiguration(jdbcConnectionConfiguration);
    context.setJavaTypeResolverConfiguration(javaTypeResolverConfiguration);
    context.setJavaModelGeneratorConfiguration(javaModelGeneratorConfiguration);
    context.setSqlMapGeneratorConfiguration(sqlMapGeneratorConfiguration);
    context.setJavaClientGeneratorConfiguration(javaClientGeneratorConfiguration);
    

    tableList.stream().forEach(tableEntity->{
        TableConfiguration tableConfiguration = new TableConfiguration(context);
        tableConfiguration.setTableName(tableEntity.getTableName());
        tableConfiguration.setDomainObjectName(tableEntity.getDomainObjectName());
        context.addTableConfiguration(tableConfiguration);
    });

    Configuration config = new Configuration();
    config.addClasspathEntry(classpathEntry);
    config.addContext(context);

    DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    MyBatisGenerator myBatisGenerator = null;
    try {
        myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    } catch (InvalidConfigurationException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    }

}

}

TableEntity实体类

package com.snowy.fastgov.generator;

import lombok.Data;

@Data
public class TableEntity {
private String tableName;
private String domainObjectName;
}

导入mybatis generator 的maven依赖之后,把局部变量的内容更换城你自己的运行maim方法即可。作者:小炉炉链接:https://www.jianshu.com/p/e9480ee6a9cc来源:简书

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值