为了账号安全,请及时绑定邮箱和手机立即绑定

解放双手!MyBatis Generator 超详细使用指南

在日常的 Java 开发工作中,基于 MyBatis 框架进行数据库操作时,我们需要手动编写大量的实体类、Mapper 接口和 Mapper XML 文件。这些代码重复性高、编写繁琐,不仅耗费时间,还容易出现拼写错误。

MyBatis Generator(MBG) 就是为解决这个痛点而生的工具。它是一个官方提供的 Maven 插件,能够根据数据库表结构,自动生成对应的实体类、Mapper 接口和 Mapper XML 文件,极大提升开发效率。

本文将从 MBG 的核心优势、环境配置、实战使用到高级技巧,全方位带你玩转这款神器。

一、MyBatis Generator 核心优势

  1. 高效省時:自动生成实体类、Mapper 接口、XML 映射文件,告别重复编码
  2. 灵活配置:支持自定义生成规则,可指定生成表、字段过滤、包路径等
  3. 无缝集成:作为 Maven 插件,可直接集成到项目构建流程中
  4. 低侵入性:生成的代码符合 MyBatis 规范,可在此基础上灵活扩展
  5. 多版本兼容:支持 MyBatis3.x 全版本,适配主流数据库(MySQL、Oracle、SQL Server 等)

二、环境准备

1. 基础依赖

确保你的项目是 Maven 项目,且已引入 MyBatis 核心依赖。以 MySQL 为例,在 pom.xml 中添加以下依赖和插件配置。

(1)添加 MyBatis 及数据库驱动依赖

<!-- MyBatis 核心依赖 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.13</version>
</dependency>

<!-- MySQL 驱动(适配 MySQL 5.x 用 5.1.x 版本,MySQL 8.x 用 8.x 版本) -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.49</version>
    <scope>runtime</scope>
</dependency>

(2)配置 MyBatis Generator Maven 插件

pom.xmlbuild 标签下添加 MBG 插件:

<build>
    <plugins>
        <!-- MyBatis Generator 插件 -->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.4.2</version>
            <configuration>
                <!-- 指定配置文件路径 -->
                <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                <!-- 允许覆盖已生成的文件(开发环境建议开启) -->
                <overwrite>true</overwrite>
                <!-- 输出详细日志 -->
                <verbose>true</verbose>
            </configuration>
            <dependencies>
                <!-- 数据库驱动依赖(必须添加,否则插件无法连接数据库) -->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.49</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

2. 核心配置文件:generatorConfig.xml

src/main/resources 目录下创建 generatorConfig.xml 文件,这是 MBG 的核心配置文件,用于定义数据库连接、生成规则、目标包路径等。

以下是一个完整的配置示例(适配 MySQL 5.x):

<?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>
    <!-- 1. 配置数据库连接(可通过外部properties文件引入,更灵活) -->
    <context id="MySQLContext" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <!-- 解决注释乱码核心配置 -->
        <property name="javaFileEncoding" value="UTF-8"/>
        <property name="remarksReporting" value="true"/>

        <!-- 可选:集成通用Mapper插件(简化CRUD操作) -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <property name="caseSensitive" value="true"/>
        </plugin>

        <!-- 数据库连接配置 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/spring-cloud-learning?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false"
                        userId="root"
                        password="root">
            <!-- 适配MySQL 5.x,确保读取表注释正常 -->
            <property name="useInformationSchema" value="true"/>
        </jdbcConnection>

        <!-- 2. 配置实体类生成规则 -->
        <javaModelGenerator targetPackage="com.atguigu.cloud.entities" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
            <property name="javaFileEncoding" value="UTF-8"/>
        </javaModelGenerator>

        <!-- 3. 配置Mapper XML文件生成规则 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!-- 4. 配置Mapper接口生成规则 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.atguigu.cloud.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!-- 5. 指定要生成的数据库表 -->
        <table tableName="t_pay" domainObjectName="Pay">
            <generatedKey column="id" sqlStatement="JDBC"/>
            <property name="useActualColumnNames" value="true"/>
        </table>
    </context>
</generatorConfiguration>

配置文件关键节点说明:

节点 作用
jdbcConnection 配置数据库连接信息,驱动类、URL、账号密码
javaModelGenerator 指定实体类的包路径和生成位置
sqlMapGenerator 指定Mapper XML文件的包路径和生成位置
javaClientGenerator 指定Mapper接口的包路径和生成位置
table 指定要生成代码的数据库表,tableName 为表名,domainObjectName 为实体类名

三、实战使用:生成代码

配置完成后,有两种方式执行 MBG 插件生成代码。

方式1:使用 IDEA 右侧 Maven 工具栏

  1. 打开 IDEA 右侧的 Maven 面板
  2. 展开你的项目 → Pluginsmybatis-generator
  3. 双击 mybatis-generator:generate 执行插件

方式2:使用命令行执行

在项目根目录下执行以下 Maven 命令:

mvn mybatis-generator:generate

执行成功后,你会在指定的包路径下看到自动生成的三类文件:

  • entities/Pay.java:数据库表对应的实体类
  • mapper/PayMapper.java:Mapper 接口
  • resources/mapper/PayMapper.xml:Mapper XML 映射文件

四、常见问题与解决方案

问题1:生成的代码注释乱码

原因:数据库字符集与 MBG 编码不统一。
解决方案

  1. 确保 MySQL 数据库、表、字段的字符集为 utf8
  2. generatorConfig.xml 中添加 javaFileEncodingremarksReporting 配置
  3. 确保 JDBC URL 包含 useUnicode=true&characterEncoding=utf8 参数

问题2:生成的文件覆盖不了旧文件

解决方案
pom.xml 的插件配置中,设置 <overwrite>true</overwrite>

问题3:提示“找不到数据库驱动”

解决方案
在 MBG 插件的 dependencies 中添加数据库驱动依赖,确保版本与项目一致。

问题4:MySQL 8.x 连接报错

解决方案

  1. 驱动类改为 com.mysql.cj.jdbc.Driver
  2. JDBC URL 添加 serverTimezone=GMT%2B8 参数
  3. 数据库驱动版本升级为 8.x

五、高级技巧

1. 过滤不需要生成的字段

table 节点中添加 columnOverrideignoreColumn 标签,可过滤指定字段:

<table tableName="t_pay" domainObjectName="Pay">
    <generatedKey column="id" sqlStatement="JDBC"/>
    <!-- 忽略某个字段 -->
    <ignoreColumn column="deleted"/>
</table>

2. 自定义实体类字段名

通过 columnOverride 标签可将数据库字段名映射为自定义的实体类字段名:

<table tableName="t_pay" domainObjectName="Pay">
    <columnOverride column="pay_no" property="payNumber"/>
</table>

3. 集成通用 Mapper

通用 Mapper 是一个第三方插件,可进一步简化 CRUD 操作,无需手动编写基础 SQL。只需在配置文件中添加对应的插件配置(上文示例已包含),生成的 Mapper 接口会继承通用 Mapper,直接拥有单表的增删改查能力。

六、总结

MyBatis Generator 是 MyBatis 生态中不可或缺的高效工具,通过简单的配置即可自动生成重复性高的数据库访问代码,让开发者将精力聚焦在核心业务逻辑上。

掌握 MBG 的配置和使用,不仅能提升开发效率,还能规范代码结构。结合数据库字符集配置、编码统一等细节处理,可彻底解决生成代码过程中的各种坑点,真正实现“一键生成,开箱即用”。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
27
获赞与收藏
81

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消