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 操作,可以直接使用或在此基础上进行扩展。

相关推荐
dazhong20121 小时前
Mybatis 敏感数据加解密插件完整实现方案
java·数据库·mybatis
努力的小郑4 小时前
MyBatis 两个隐蔽深坑实录:Arrays.asList() 与数字 0 的“离奇失踪”
java·面试·mybatis
cike_y7 小时前
Mybatis增删改查&CURD
java·开发语言·tomcat·mybatis·安全开发
小鸡脚来咯18 小时前
Redis与MySQL双写一致性(实战解决方案)
spring·oracle·mybatis
小鸡脚来咯20 小时前
Redis三大问题:穿透、击穿、雪崩(实战解析)
java·spring·mybatis
陌路201 天前
redis缓存雪崩,击穿,穿透
redis·缓存·mybatis
学习编程的Kitty2 天前
Redis(1)——持久化
数据库·redis·mybatis
利刃大大2 天前
【Mybatis】Mybatis入门 && 基础操作 && XML配置文件开发 && 多表查询 && 注入问题 && 数据库连接池
xml·数据库·mybatis
野蛮人6号2 天前
黑马微服务报错以及解决前23节课
spring boot·微服务·mybatis
悟能不能悟2 天前
mybatis sql where a=#{a},如果a为null,会返回什么
数据库·sql·mybatis