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

相关推荐
爱学英语的程序员7 小时前
面试官:你了解过哪些数据库?
java·数据库·spring boot·sql·mysql·mybatis
阿杰真不会敲代码10 小时前
Mybatis-plus入门到精通
java·tomcat·mybatis
侠客行031717 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
老毛肚19 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
独断万古他化1 天前
【SSM开发实战:博客系统】(三)核心业务功能开发与安全加密实现
spring boot·spring·mybatis·博客系统·加密
fengxin_rou1 天前
[Redis从零到精通|第四篇]:缓存穿透、雪崩、击穿
java·redis·缓存·mybatis·idea·多线程
老毛肚2 天前
MyBatis插件原理及Spring集成
java·spring·mybatis
马尔代夫哈哈哈2 天前
MyBatis 入门与实战:从配置到CRUD一站式指南
mybatis
Jul1en_2 天前
【MyBatis/plus】核心配置、插件与 MyBatis-Plus 构造器 Wrapper
mybatis
LiZhen7982 天前
SpringBoot 实现动态切换数据源
java·spring boot·mybatis