hami-MyBatis 逆向 ## 逆向工程配置与使用

MyBatis 逆向 ## 逆向工程配置与使用

1. 核心依赖(pom.xml)

xml

复制代码
<!-- MyBatis 核心依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.5</version>
</dependency>

<!-- MyBatis 逆向工程依赖 -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>

<!-- 数据库驱动 -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
</dependency>

2. 逆向工程配置文件(generatorConfig.xml)

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="mybatisGenerator" >
        <!-- 去除自动生成的注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        
        <!-- 数据库连接配置 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/ham?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!-- 类型解析器 -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 生成POJO类的位置 -->
        <javaModelGenerator targetPackage="com.qcby.model"
                            targetProject=".\hami_core\src\main\java">
            <property name="enableSubPackages" value="false" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!-- 生成Mapper映射文件的位置 -->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject=".\hami_core\src\main\resources">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>

        <!-- 生成Mapper接口的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.qcby.dao"
                             targetProject=".\hami_core\src\main\java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!-- 指定要生成的表 -->
        <table tableName="album" 
               enableCountByExample="false"
               enableUpdateByExample="false" 
               enableDeleteByExample="false"
               enableSelectByExample="false" 
               selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>

3. 逆向工程执行类

复制代码
package com.qcby.util;

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("hami_core/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();
        }
    }
}

4. 逆向工程生成的文件说明

  1. 实体类(Model)

    • 对应数据库表结构的 JavaBean
    • 包含字段的 getter/setter 方法
    • 示例:Album.java、Song.java等
  2. Mapper 接口

    • 数据访问层接口,定义数据库操作方法
    • 包路径:com.qcby.dao
    • 示例:AlbumMapper.java
  3. Mapper 映射文件

    • XML 格式,实现 Mapper 接口的方法
    • 包含 CRUD 基本操作的 SQL 语句
    • 存放路径:src/main/resources/mapper
    • 示例:

    xml

    复制代码
    <!-- 基本查询示例 -->
    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
      select 
      <include refid="Base_Column_List" />
      from album
      where AID = #{aid,jdbcType=INTEGER}
    </select>

5. 关键配置说明

  • 数据库连接配置:指定数据库驱动、连接地址、用户名和密码
  • 生成路径配置
    • javaModelGenerator:实体类生成路径
    • sqlMapGenerator:Mapper XML 文件生成路径
    • javaClientGenerator:Mapper 接口生成路径
  • 表配置
    • tableName:数据库表名
    • 关闭 Example 相关方法:enableCountByExample等设为 false,简化生成代码

6. 使用方法

  1. 配置好generatorConfig.xml中的数据库连接和生成路径
  2. table标签中添加需要生成代码的表名
  3. 运行Generator类的main方法
  4. 自动生成实体类、Mapper 接口和映射文件

通过 MyBatis 逆向工程,可以快速生成数据库表对应的基础操作代码,减少重复开发工作,提高开发效率。生成的代码包含了基本的 CRUD 操作,可以直接使用或在此基础上进行扩展。

相关推荐
C++、Java和Python的菜鸟1 天前
第1章 项目前置课-Mybatis-Plus
mybatis
jaysee-sjc1 天前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis
步行cgn1 天前
MyBatis 动态 SQL 完全指南
sql·tomcat·mybatis
步行cgn2 天前
错误:Invalid bound statement (not found) 详解与解决方案
mybatis
sugar__salt2 天前
MyBatis-Plus 从入门到实战:高效简化数据库开发的完整指南
数据库·spring boot·mybatis·数据库开发
bbq粉刷匠3 天前
手写 SQL 被一次 mvn generate 抹掉之后:我用一个 extension/ 子目录躲开 MyBatis 两个坑
数据库·sql·mybatis
ChaHae-In3 天前
MyBatis入门操作
java·mybatis
sugar__salt3 天前
MyBatis ③动态 SQL 完全指南 —— 从条件拼接到批量操作
java·sql·mybatis
元界metalite4 天前
MyBatis多数据源常见难题-事务开始了为何数据源还没选出来
后端·mybatis
霸道流氓气质4 天前
Mysql中慢 SQL 优化实战:减少不必要的 JOIN 关联
sql·mysql·mybatis