当前位置: 首页 > news >正文

MyBatis Generator:根据数据库表生成 MyBatis 的实体类、Mapper 接口和 XML 映射文件

1. 什么是 MyBatis Generator?

MyBatis Generator(简称 MBG)是 MyBatis 官方提供的一款代码生成工具。它能够根据数据库表结构,自动生成对应的实体类(POJO)、Mapper 接口以及 XML 映射文件。这极大地减少了开发者在搭建数据访问层时的重复性工作,提升了开发效率,并保证了代码风格的一致性。

2. 核心功能与生成内容

MBG 主要生成以下三类核心文件:

  • 实体类 (Model/Pojo):与数据库表字段一一对应的 Java 类,通常包含私有字段、Getter/Setter 方法以及 toString() 方法。
  • Mapper 接口 (Mapper Interface):定义数据操作方法的 Java 接口,如selectByPrimaryKey,insert,updateByPrimaryKey等。
  • XML 映射文件 (Mapper XML):实现 Mapper 接口中定义的方法所对应的 SQL 语句映射。

此外,它还可以根据配置生成 Example 类(用于构建动态查询条件)和 SQL Provider 类(基于注解的动态 SQL)。

3. 快速开始:使用 Maven 插件

最常用的方式是通过 Maven 插件来运行 MBG。

3.1 添加插件配置

在项目的pom.xml文件中添加如下插件配置:

<build> <plugins> <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>8.0.33</version> </dependency> </dependencies> </plugin> </plugins> </build>

3.2 创建配置文件

src/main/resources目录下创建generatorConfig.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="MySQLTables" targetRuntime="MyBatis3"> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/your_database" userId="your_username" password="your_password"> </jdbcConnection> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 指定要生成的表,可以使用通配符 % --> <table tableName="user" domainObjectName="User"> <!-- 可选的列级配置,例如忽略某些字段 --> <!-- <columnOverride column="created_time" javaType="java.time.LocalDateTime"/> --> </table> <table tableName="order" domainObjectName="Order"/> </context> </generatorConfiguration>

3.3 执行生成命令

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

mvn mybatis-generator:generate

执行成功后,将在指定的包路径下生成对应的 Java 文件和 XML 文件。

4. 配置文件详解

4.1 核心配置节点

  • <context>:定义生成上下文,可配置多个。最重要的属性是targetRuntime,决定了生成代码的风格(如 MyBatis3, MyBatis3Simple)。
  • <jdbcConnection>:配置数据库连接,用于读取表结构元数据。
  • <javaModelGenerator>:配置实体类的生成规则,如包名、项目路径、是否启用子包等。
  • <sqlMapGenerator>:配置 XML 映射文件的生成规则。
  • <javaClientGenerator>:配置 Mapper 接口的生成规则和类型(如 XMLMAPPER, ANNOTATEDMAPPER)。
  • <table>:指定要生成代码的具体表。可以配置多个,支持通配符匹配表名。

4.2 常用 <table> 子配置

  • <generatedKey>:配置自增主键。
  • <columnOverride>:覆盖特定列的 Java 类型、JDBC 类型或处理器。
  • <ignoreColumn>:忽略某些字段,不生成到实体类中。
  • <property>:表级别的属性,如是否生成 Example 类 (enableCountByExample="false")。

5. 高级特性与自定义

5.1 使用插件 (Plugin)

MBG 支持插件机制,可以干预代码生成过程。例如,官方提供的LombokPlugin可以为实体类生成 Lombok 注解,从而省略 Getter/Setter 方法。

<context ...> <plugin type="org.mybatis.generator.plugins.LombokPlugin"> <property name="data" value="true"/> <!-- 生成 @Data 注解 --> </plugin> ... </context>

5.2 自定义注释生成器

通过实现CommentGenerator接口,可以自定义实体类字段、方法以及 XML 文件中的注释内容。

5.3 生成 Example 类

targetRuntime设置为MyBatis3时,默认会为每个表生成一个 Example 类,用于构建复杂的动态查询条件(如andNameLike)。如果不需要,可以在<table>中配置enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"来禁用。

6. 注意事项与最佳实践

  • 配置文件版本管理:将generatorConfig.xml纳入版本控制,便于团队共享和复现。
  • 生成文件覆盖:配置<overwrite>true</overwrite>时要谨慎,避免覆盖手动修改过的代码。建议将生成的代码与业务代码分离。
  • 数据库驱动兼容性:确保插件依赖的数据库驱动版本与项目运行时使用的版本一致。
  • 增量生成:MBG 不会删除已生成的文件。当表结构变更(如删除字段)时,需要手动清理旧的实体类字段或重新生成全部文件。
  • 结合 Lombok 使用:强烈推荐使用 Lombok 插件,可以极大简化实体类,使代码更简洁。

7. 总结

MyBatis Generator 是 MyBatis 生态中提升开发效率的利器。通过简单的 XML 配置,即可自动化生成数据访问层的基础代码,让开发者更专注于业务逻辑的实现。掌握其配置方法和高级特性,能够根据项目需求进行灵活定制,是 Java 后端开发者必备的技能之一。

http://www.jsqmd.com/news/1152789/

相关文章:

  • 如何选择?揭秘5大靠谱心理设备企业,让你不再迷茫
  • 【ROS2】 机械臂架构 vs UE5 游戏开发架构 终极对照表
  • 基于51/STM32单片机的激光测距仪 防撞报警 倒车雷达 嵌入式套件31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Cursor Free VIP深度解析:突破AI编程助手限制的完整技术方案
  • Python 4种插值方法对比:Griddata vs Krige vs RBF vs IDW,2000+站点实测效率与效果
  • 2026年邮件营销高依赖行业TOP10?一文看懂热门应用场景
  • Windows防撤回技术深度解析:RevokeMsgPatcher如何让消息永不消失
  • 豆包千问相继收紧智能体功能,本地部署才是Agent的地基
  • 电阻式传感器选型指南:3类核心原理对比与5个工业应用场景解析
  • 2026年AI大模型API加速站全网真实实测:五大主流平台硬核数据全维度对比选型攻略
  • 挑战/响应认证实战:Python 3.11 模拟 3 种攻击场景与防御方案
  • 用MCUXPRESSO IDE 仿真 MIMXRT1186失败的bug
  • 为什么“记住规律“比“记住事实“更重要? 规律可以极大地压缩信息 *提炼规律、建立联系、在需要时快速重建细节
  • YOLOv8疲劳驾驶识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)
  • Flink 2.x状态演进:理解解 1.x 与 2.x 状态存储机制
  • 安卓短信备份恢复终极指南:SMS Backup+ 完整使用教程
  • 全过程咨询、工程投标数字化工具分享|一站式招标资讯小程序全咨数字平台实操指南
  • 在章贡区找新房装修企业,到底哪家才真正可靠呢?
  • 侧翻自正,稳行波浪:智能型水上遥控救援飞翼
  • 基于SpringBoot的智慧农场农事管理系统设计与实现
  • 【Midjourney vs DALL-E终极对决】:20年AI视觉工程师实测12项核心指标,谁才是商业级生成的真正王者?
  • okbiye|开题报告 AI 专属创作模块,破解毕业生开题构思全阶段难题
  • 基于Dify工作流与MCP协议构建企业岗位智能副驾实战指南
  • 新人量化软件避坑:看懂参数再看策略结果
  • LangChain 零基础入门教程|Python + Node.js 双版本实战
  • 2026年,揭秘苦荞挂面背后的匠心与健康秘密
  • 终极免费解锁Cursor Pro完整功能:告别AI编程助手限制的完整指南
  • 录屏内存泄漏怎么办?长时间录制防崩溃的3种技术方案
  • NLG评测指标深度对比:BLEU、ROUGE、BERTScore的适用边界与陷阱
  • 电商AI图生视频工具怎么选?一文看懂技术原理与实战横评