【Mybatis专栏】(三)逆向工程

208 阅读1分钟

本文已参与新人创作礼活动,一起开启掘金创造之路。

逆向工程

MyBatis 逆向⼯程的组件是 MyBatis Generator,简称 MBG,是专为 MyBatis 框架定制的代码⾃动⽣成解决⽅案, MBG 可以根据数据表结构快速⽣成对应的实体类、 Mapper接⼝、 Mapper.xml,并且⽀持基本的 CRUD 操作,但是业务逻辑相对复杂的操作就需要开发者⼿动完成。

1、pom.xml添加依赖

<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.4.1</version>
</dependency>

2、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>
    <context id="testTables" targetRuntime="MyBatis3">
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mysqldemo?useUnicode=true&amp;characterEncoding=UTF-8"
                        userId="root"
                        password="zwt123"/>
        <javaModelGenerator targetPackage="org.sample.entity" targetProject="./src/main/java"/>
        <sqlMapGenerator targetPackage="org.sample.repository" targetProject="./src/main/java"/>
        <javaClientGenerator type="XMLMAPPER" targetPackage="org.sample.repository" targetProject="./src/main/java"/>
        <table tableName="t_account2" domainObjectName="Account2"/>
    </context>
</generatorConfiguration>
  • jdbcConnection 配置数据库连接信息
  • javaModelGenerator 配置 JavaBean 的⽣成策略
  • sqlMapGenerator 配置 SQL 映射⽂件⽣成策略
  • javaClientGenerator 配置 Mapper 接⼝的⽣成策略
  • table 配置要逆向解析的数据表(tableName:表名, domainObjectName;实体类名)

3、执行方法

代码(⽣成对应的实体类、 Mapper接⼝、 Mapper.xml)生成器通用模板函数

public static void generatorTest() {
    List<String> warings = new ArrayList<String>();
    boolean overwrite = true;
    String genCig = "/generatorConfig.xml";
    File configFile = new File(Objects.requireNonNull(Test.class.getResource(genCig)).getFile());
    ConfigurationParser configurationParser = new ConfigurationParser(warings);
    Configuration configuration = null;
    try {
        configuration = configurationParser.parseConfiguration(configFile);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XMLParserException e) {
        e.printStackTrace();
    }
    DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    MyBatisGenerator myBatisGenerator = null;
    try {
        myBatisGenerator = new MyBatisGenerator(configuration,callback,warings);
    } catch (InvalidConfigurationException e) {
        e.printStackTrace();
    }
    try {
        myBatisGenerator.generate(null);
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

4、效果

image.png

image.png