java之Mybatis逆向工程

71 阅读2分钟

在前面我们知道,数据库中的一个表就会对应entity中的一个实体类,对应mapper类中的一个接口,对应有一个相应的xml文件,一个表就会有这么多的工作,如果是多个表,工作量会越来越大,这时我们可以学习一项技术叫做Mybatis逆向工程,可以大大的简化我们的工作量,提高工作效率.

我们需要在外部新建一个小工程,专门用来做Mybatis逆向工程的.目录结构大致如下.

image.png

因为是专门用来和数据库打交道的,所以只需要有mapper和entity即可.

1.在pom.xml中导入依赖

image.png

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>mybatisDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.4.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

</project>

2.在resource下面新建一个xml文件

image.png

3.配置xml文件

image.png

1.jdbcConnection

jdbcConnection标签里面是一些数据库的东西,

driverClass:驱动,

connectionURl:数据库表,

userId:用户名,

password:密码

image.png

2.javaModelGenerator

javaModelGenerator是生成javaBean实体类的

targetPackage: 生成的javaBean实体类放在哪个包下.

targetProject: 生成的javaBean放到当前文件哪个路径下.

image.png

3.SqlMapGenerator

SqlMapGenerator是生成xml文件的

targetPackage: 生成的xml文件放到哪个包下

targetProject: 生成的xml文件放到当前文件夹哪个路径下

image.png

4.javaClientGenerator

javaClientGenerator是生成mapper接口的

type:指定生成方式(一般使用接口绑定生成,需要提前写好sqlMapGenerator)

targetPackage: 生成的mapper接口放到哪个包下

targetProject: 生成的mapper接口放到当前文件夹哪个路径下

5.table标签

tableName: 数据库表名

domainObjectName: javaBean实体类名

mapperName: mapper接口的名

image.png

6.编写测试类

image.png 测试类里面的逻辑和代码初期不需要看懂,直接复制粘贴会用即可,那里有一个文件名是generatorConfig.xml就是第二步中的新建xml文件的名字,这里注意对应即可.

运行完测试类代码就会生成对应的javaBean实体类,mapper接口还有对应的xml文件,我们只需要复制到我们的项目里面即可.

测试类代码如下

import org.junit.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class TestDemo {

    @Test
    public void test01() throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("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);
    }
}