MyBatis框架 - 逆向工程

  • 没有MyBatis的逆向工程:实体类 --> 持久层接口类 --> 业务层接口类、实现类 --> resources下的*Mapper配置文件,需要自己手动写。
  • 有MyBatis的逆向工程,这个过程可以省略,使用逆向工程直接生成。

逆向工程的配置文件

图中红框的位置要与事件的项目匹配正确:

xml 复制代码
<context id="mybatisGenerator" >
    <commentGenerator>
        <!-- 是否去除自动生成的注释 true:是 : false:否 -->
        <property name="suppressAllComments" value="true" />
    </commentGenerator>
    <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    <!--与spring的配置文件中的数据源无关-->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/mybatis_db?serverTimezone=CTT&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true" userId="root"
                    password="root">
    </jdbcConnection>

    <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
        NUMERIC 类型解析为java.math.BigDecimal -->
    <javaTypeResolver>
        <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <!-- targetProject:生成PO类的位置 -->
    <javaModelGenerator targetPackage="com.tx.entity"
                        targetProject=".\mybatisJava05\src\main\java">
        <!-- enableSubPackages:是否让schema作为包的后缀 -->
        <property name="enableSubPackages" value="false" />
        <!-- 从数据库返回的值被清理前后的空格 -->
        <property name="trimStrings" value="true" />
    </javaModelGenerator>
    <!-- targetProject:mapper映射文件生成的位置 -->
    <sqlMapGenerator targetPackage="mapper"
                     targetProject=".\mybatisJava05\src\main\resources">
        <!-- enableSubPackages:是否让schema作为包的后缀 -->
        <property name="enableSubPackages" value="false" />
    </sqlMapGenerator>
    <!-- targetPackage:mapper接口生成的位置 -->
    <javaClientGenerator type="XMLMAPPER"
                         targetPackage="com.tx.dao"
                         targetProject=".\mybatisJava05\src\main\java">
        <!-- enableSubPackages:是否让schema作为包的后缀 -->
        <property name="enableSubPackages" value="false" />
    </javaClientGenerator>
    <!-- 指定数据库表 -->
    <table tableName="user" enableCountByExample="false"
           enableUpdateByExample="false" enableDeleteByExample="false"
           enableSelectByExample="false" selectByExampleQueryId="false"/>


    <!-- 有些表的字段需要指定java类型
     <table schema="" tableName="">
        <columnOverride column="" javaType="" />
    </table> -->
</context>

反向类

java 复制代码
package com.tx.utils;

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 Generator {
    public void generator() throws Exception  {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        // 执行逆向工程配置文件
        File configFile = new File("mybatisJava05/src/main/resources/generatorConfig.xml");
        ConfigurationParser parser = new ConfigurationParser(warnings);
        // 读取配置文件
        Configuration config = parser.parseConfiguration(configFile);
        // 回调
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
                callback, warnings);
        myBatisGenerator.generate(null);
    }

    public static void main(String[] args) throws Exception {
        try {
            Generator generatorSqlmap = new Generator();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

执行逆向工程配置文件目录要匹配正确,运行反向类后,会自动生成User实体类、UserMapper接口、UserMapper.xml文件

注意:实体类中需要添加有参构造器、无参构造器、重写toString()方法,重点是让实体类继承Serializable

相关推荐
之歆19 小时前
Spring AI入门到实战到原理源码-MCP
java·人工智能·spring
yangminlei20 小时前
Spring Boot3集成LiteFlow!轻松实现业务流程编排
java·spring boot·后端
qq_3181215920 小时前
互联网大厂Java面试故事:从Spring Boot到微服务架构的技术挑战与解答
java·spring boot·redis·spring cloud·微服务·面试·内容社区
计算机毕设VX:Fegn089520 小时前
计算机毕业设计|基于springboot + vue医院设备管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
J_liaty20 小时前
Spring Boot整合Nacos:从入门到精通
java·spring boot·后端·nacos
Mr__Miss20 小时前
保持redis和数据库一致性(双写一致性)
数据库·redis·spring
阿蒙Amon21 小时前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
daidaidaiyu21 小时前
Spring IOC 源码学习 一文学习完整的加载流程
java·spring
Knight_AL21 小时前
Spring 事务传播行为 + 事务失效原因 + 传播行为为什么不用其他模式
数据库·sql·spring
2***d88521 小时前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端