Spring Boot项目中利用MyBatis逆向工程提升开发效率

前言

在现代企业级应用开发中,常常需要根据数据库的表结构来创建对应的实体类、Mapper接口以及Mapper映射文件。如果全都手动来创建,既耗费时间,又容易出错。MyBatis Generator(MBG)是一个能帮我们快速地根据数据库表结构生成对应的代码的工具,这就是我们通常所说的逆向工程。

一、添加相关依赖

要使用MyBatis逆向工程,我们首先需要在Spring Boot项目中添加必要的依赖。以下是在使用MySQL数据库的Spring Boot项目中,添加MyBatis及MyBatis Generator依赖的pom.xml配置:

<dependencies>
    <!-- Spring Boot Starters -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>

    <!-- MyBatis Generator -->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.4.0</version>
    </dependency>
</dependencies>

二、编写Generator配置文件

MBG工作的基础是配置文件,这个配置文件告诉MBG如何连接数据库,以及如何生成哪些表的代码。在Spring Boot项目的src/main/resources目录下创建名为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="MysqlContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <javaModelGenerator targetPackage="com.example.demo.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <javaClientGenerator targetPackage="com.example.demo.mapper" targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <table schema="test

" tableName="user" domainObjectName="User">
        </table>
    </context>
</generatorConfiguration>

三、编写代码生成器

接下来,我们在项目中创建一个用于执行代码生成的类。这个类的作用是读取generatorConfig.xml文件,并调用MyBatis Generator来生成代码。

以下是一个简单的生成器类示例:

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.util.ArrayList;
import java.util.List;

public class CodeGenerator {
    
    
    public static void main(String[] args) throws Exception {
    
    
        List<String> warnings = new ArrayList<>();
        boolean overwrite = true;
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(CodeGenerator.class.getResourceAsStream("/generatorConfig.xml"));
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
    }
}

四、执行代码生成

最后,只需要运行上面创建的CodeGenerator类的main方法,就可以根据generatorConfig.xml配置文件生成对应的代码了。启动项目并运行CodeGenerator主函数,代码会自动根据数据库表结构生成在你之前在配置文件中设置的目标路径。

public class CodeGenerator {
    
    
    public static void main(String[] args) throws Exception {
    
    
        // warnings用于存放代码生成过程中的警告信息
        List<String> warnings = new ArrayList<>();

        // 指定是否覆盖原有文件,如果为true则会覆盖原有文件
        boolean overwrite = true;

        // 解析MBG配置文件
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(CodeGenerator.class.getResourceAsStream("/generatorConfig.xml"));

        // 创建MBG
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);

        // 执行代码生成
        myBatisGenerator.generate(null);

        // 打印警告信息
        for (String warning : warnings) {
    
    
            System.out.println(warning);
        }
    }
}

五、验证生成的代码

代码生成完成后,我们可以在项目中看到新生成的实体类、Mapper接口以及Mapper XML映射文件。接下来,就可以使用这些代码进行数据库的操作了。

例如,对于我们在MBG配置文件中定义的"user"表,MBG生成了以下文件:

  1. User.java:这是对应"user"表的实体类,包含了表中所有的字段及其getter和setter方法。

  2. UserMapper.java:这是"user"表的Mapper接口,包含了对"user"表进行操作的基本方法,如select, insert, update, delete等。

  3. UserMapper.xml:这是"user"表的Mapper XML映射文件,包含了对"user"表进行操作的SQL语句。

你可以在Spring Boot服务中注入UserMapper使用,下面是一个简单的例子:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;

@RestController
public class UserController {
    
    

    @Autowired
    private UserMapper userMapper;

    @GetMapping("/users")
    public List<User> getAllUsers() {
    
    
        return userMapper.selectAll();
    }
}

通过以上代码,你可以启动Spring Boot应用并访问"/users"路径获取数据库中所有的用户。

通过使用MyBatis Generator,我们可以根据数据库表快速生成对应的代码,大大提高了我们的开发效率,减少了重复的工作。无论是进行快速原型开发,还是处理大量数据库表的情况下,MyBatis Generator都是一个非常实用的工具。

猜你喜欢

转载自blog.csdn.net/weixin_46703995/article/details/130857302