MyBatis 逆向工程(MBG)详解

1. 逆向工程的核心功能

为什么要使用 MyBatis 逆向工程?

  • 自动生成代码:自动创建 ModelMapperMapper.xml 文件,减少重复劳动。

  • 减少出错概率:手写 SQL 可能有语法错误,MBG 生成的 SQL 语句结构规范,减少错误。

  • 节省开发时间:大大减少数据库表结构变更后代码修改的成本。

  • 可自定义生成规则:可以选择是否生成 Example 类,是否生成 注解 SQL 还是 XML 形式 的 SQL 语句等。


2. 逆向工程环境搭建

2.1 添加 MyBatis 逆向工程依赖

pom.xml 文件中添加 MyBatis Generator 依赖:


    
    
        org.mybatis
        mybatis
        3.5.13
    

    
    
        org.mybatis.spring.boot
        mybatis-spring-boot-starter
        3.0.3
    

    
    
        org.mybatis.generator
        mybatis-generator-core
        1.4.2
    

    
    
        mysql
        mysql-connector-java
        8.0.33
    


2.2 配置 MyBatis Generator

MyBatis 逆向工程的核心配置文件是 generatorConfig.xml,用于定义数据库连接信息、Java 代码生成位置等。

src/main/resources 目录下创建 generatorConfig.xml 文件,并填入以下内容:





    
    
        
        
        
        

        
        

        
        

        
        

配置参数说明

  • targetRuntime="MyBatis3":生成符合 MyBatis 3 规范的代码。

  • :配置数据库连接信息。

  • :生成 Java Bean(实体类)。

  • :生成 MyBatis 的 XML 映射文件。

  • :生成 Mapper 接口。

:指定需要生成的数据库表,domainObjectName 代表生成的 Java 类名。


3. 运行 MyBatis 逆向工程

3.1 通过 Java 代码运行

创建 MyBatisGeneratorMain 运行 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.io.File;
import java.util.ArrayList;
import java.util.List;

public class MyBatisGeneratorMain {
    public static void main(String[] args) throws Exception {
        List warnings = new ArrayList<>();
        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);
        for (String warning : warnings) {
            System.out.println(warning);
        }
    }
}

然后运行 MyBatisGeneratorMain,它会根据 generatorConfig.xml 生成相应的代码。


3.2 通过 Maven 插件运行

可以直接在 pom.xml 中添加 MyBatis Generator Maven 插件:


    
        
            org.mybatis.generator
            mybatis-generator-maven-plugin
            1.4.2
            
                
                    generate
                    
                        generate
                    
                
            
            
                src/main/resources/generatorConfig.xml
                true
                true
            
        
    

然后在终端执行:

mvn mybatis-generator:generate

它会自动运行 MyBatis Generator 并生成代码。


4. 生成的代码结构

运行 MyBatis 逆向工程后,会自动生成以下文件:

src/main/java/com/example/model/
    ├── User.java   # 用户实体类

src/main/java/com/example/mapper/
    ├── UserMapper.java   # MyBatis Mapper 接口

src/main/resources/mapper/
    ├── UserMapper.xml   # MyBatis SQL 映射文件

4.1 生成的实体类

public class User {
    private Integer id;
    private String name;
    private Integer age;

    // 省略 getter、setter
}

4.2 生成的 Mapper 接口

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);
    int insert(User record);
    User selectByPrimaryKey(Integer id);
    int updateByPrimaryKey(User record);
}

4.3 生成的 Mapper XML


    
        DELETE FROM users WHERE id = #{id}
    

    
        INSERT INTO users (name, age) VALUES (#{name}, #{age})
    

    

    
        UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
    


5. 总结

MyBatis 逆向工程极大地 提高了开发效率,特别适用于项目初期数据库表结构已确定的情况下。

  • 自动生成实体类、Mapper 接口、XML 配置,省去手写代码的麻烦。

  • 支持 SQL XML 和 注解模式,适应不同的开发需求。

  • 可以配合 Spring Boot 使用,与项目无缝整合。

你可能感兴趣的:(mybatis)