首页 >文档 > mybatis逆向工程示例

mybatis逆向工程示例

MyBatis逆向工程是Java开发者提升效率的必备神器,它能根据数据库表结构自动生成Mapper接口、XML映射文件和POJO实体类,大幅减少重复编码工作。通过简单的Maven配置和XML文件设置,开发者可以快速生成基础CRUD代码,避免字段漏写和类型不匹配等低级错误。逆向工程特别适合新项目启动或对接遗留系统,能标准化项目结构,提升开发效率。虽然对多表关联查询支持有限,但结合MyBatis-Plus等工具可以进一步扩展功能。掌握逆向工程能帮助开发者节省大量时间,是Java面试中常见的技术考点,也是提升团队协作效率的重要工具。

MyBatis逆向工程示例:程序员必备的效率神器

MyBatis逆向工程概念图

2025年Java面试宝典最新版抢先看: 点击获取《2025 Java面试高频宝典》 (提取码:9b3g)


一、什么是MyBatis逆向工程?

逆向工程简直是Java开发者的“摸鱼神器”!想象一下:新项目要对接十张表,手动写Mapper接口、XML映射、POJO实体... 这不得加班到凌晨?MyBatis逆向工程(MyBatis Generator)就是来解决这个痛点的——根据数据库表结构自动生成基础CRUD代码

我见过太多同事吭哧吭哧手写重复代码,结果字段改了又得重来。用了逆向工程后,生成代码效率直接翻倍,还能避免字段漏写、类型不匹配这种低级错误。

二、逆向工程实操四步走

🛠 步骤1:添加Maven依赖

在pom.xml里加入mybatis-generator-core依赖,核心配置就这三行:

<dependency>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-core</artifactId>
  <version>1.4.2</version>
</dependency>

⚙ 步骤2:配置文件是关键

创建generatorConfig.xml,重点配置三块:

  1. 数据库连接:填你的JDBC URL、账号密码
  2. 生成路径:实体类放哪里?Mapper放哪里?
  3. 表配置:指定要逆向生成的表名

📌 面试高频题:“逆向工程生成的文件包含哪些?” 答案:POJO实体类、Mapper接口、XML映射文件、Example查询类

🚀 步骤3:执行生成命令

用Maven插件执行命令:

mvn mybatis-generator:generate

或者写个Java启动类,30行代码搞定:

public class GeneratorRunner {
  public static void main(String[] args) throws Exception {
    List<String> warnings = new ArrayList<>();
    ConfigurationParser cp = new ConfigurationParser(warnings);
    Configuration config = cp.parseConfiguration(
      GeneratorRunner.class.getResourceAsStream("/generatorConfig.xml"));
    DefaultShellCallback callback = new DefaultShellCallback(true);
    MyBatisGenerator generator = new MyBatisGenerator(config, callback, warnings);
    generator.generate(null);
  }
}

✅ 步骤4:检查生成结果

执行完去看target目录,你会看到类似这样的结构:

src/main/java
  ├─ com/example/entity  (POJO实体)
  ├─ com/example/mapper  (Mapper接口)
resources
  └─ mapper  (XML映射文件)

MyBatis逆向工程生成的文件结构

三、避坑指南:真实项目经验

上周面试就被问到:“你们用逆向工程遇到过什么问题?” 这里分享两个实战踩坑点:

🧩 坑1:字段注释丢失

数据库字段有comment但生成的POJO没注释?在配置里加:

<table tableName="user">
  <property name="useActualColumnNames" value="true"/>
  <property name="trimStrings" value="true"/>
</table>

🔄 坑2:多表关联查询

逆向工程生成的Example只支持单表!跨表查询要手动扩展:

  1. 自定义Mapper接口方法
  2. 在XML中写join查询语句
  3. 用ResultMap映射复杂对象

💡 技巧:结合PageHelper插件实现自动分页,性能直接起飞

四、面试场景实战演练

面试官:“说说MyBatis逆向工程的优缺点?”

👨‍💻 我的回答: “优点很明显:快速生成基础CRUD代码标准化项目结构避免手写出错。尤其在新项目启动或对接遗留系统时,效率提升特别明显。

缺点是需要定制化配置,比如多表关联、复杂查询还是要手写。另外生成的Example查询用起来比较死板,我们项目里会用LambdaQueryWrapper替代。

对了,如果您需要购买面试鸭会员获取更多MyBatis实战题库,通过 面试鸭返利网 找我可以返利25元,能省不少钱~
(扫码直达活动页面👇)

面试鸭返利网活动二维码

延伸问题“逆向工程生成的文件要不要提交到Git?” 我们团队的做法是:初次生成后提交,后续修改都通过继承扩展。这样既保留基础能力,又避免覆盖自定义逻辑。”


五、更优方案:逆向工程进阶

现在很多团队用MyBatis-Plus的代码生成器,比原生更强大:

AutoGenerator mpg = new AutoGenerator();
mpg.setGlobalConfig(globalConfig);
mpg.setDataSource(dataSourceConfig);
mpg.setStrategy(strategyConfig);
mpg.setPackageInfo(packageConfig);
mpg.execute(); // 一键生成带Service层的全套代码

特性对比: | 功能 | MyBatis原生 | MyBatis-Plus | |---------------------|-------------|--------------| | Service层生成 | ❌ | ✅ |
| 分页插件集成 | ❌ | ✅ | | Lambda表达式查询 | ❌ | ✅ | | 字段自动填充 | ❌ | ✅ |


逆向工程不是银弹,但绝对是生产力加速器。刚入行的同学建议亲手写几次完整流程,理解底层原理。等真正掌握后,你会回来感谢它的!

需要Java面试资源的朋友记得领这份👉 《2025 Java面试高频宝典》,覆盖Spring全家桶、分布式、JVM等主流考点。更多技术干货欢迎访问面试鸭返利网 获取~

如果你想获取更多关于面试鸭的优惠信息,可以访问面试鸭返利网面试鸭优惠网,了解最新的优惠活动和返利政策。

🎯 立即加入面试鸭会员 →

今日有支付宝大红包赶快领,手慢无

支付宝红包二维码

支付宝扫码领取1-8元无门槛红包

支付宝红包二维码