MyBatis Generator (MBG) 可根據數據庫表結構自動生成實體類、Mapper 接口、XML 映射文件,大幅減少樣板代碼編寫。本文記錄從插件安裝、配置、生成到代碼調整與整合測試的完整流程。
mybatis_generator_1.3.1.zip(或最新版)Help > Install New Software > Add > Local 指向該目錄安裝 MBG 插件<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "https://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- JDBC 驅動包位置(本地絕對路徑) -->
<classPathEntry location="D:/Genuitec/MyEclipse 10/soft/mybatis/mysql-connector-java-5.1.26-bin.jar" />
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true" />
<property name="suppressDate" value="true" />
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/scm?useUnicode=true&characterEncoding=UTF-8"
userId="root" password="root">
</jdbcConnection>
<!-- 實體類生成位置 -->
<javaModelGenerator targetPackage="cn.itcast.scm.entity" targetProject="scm/src">
<property name="trimStrings" value="false" />
</javaModelGenerator>
<!-- Mapper XML 生成位置 -->
<sqlMapGenerator targetPackage="cn.itcast.scm.dao" targetProject="scm/src" />
<!-- Mapper 接口生成位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.itcast.scm.dao" targetProject="scm/src" />
<!-- 目標表配置 -->
<table tableName="account" domainObjectName="Account" />
<table tableName="supplier" domainObjectName="Supplier" />
</context>
</generatorConfiguration>
關鍵配置說明:
targetRuntime="MyBatis3":生成 MyBatis 3.x 風格代碼suppressAllComments/Date:抑制生成的註釋與時間戳,避免版本控制噪音trimStrings:是否自動 trim 字符串屬性,通常設為 false 由業務層處理type="XMLMAPPER":生成 XML 映射文件 + 接口(而非純註解模式)| 階段 | 關鍵動作 | 避坑指南 |
|---|---|---|
| 配置 | 精確配置 JDBC URL、驅動包路徑、目標包路徑 | 使用相對路徑或環境變量避免機器遷移失效 |
| 生成 | 按表生成,首次全量,後續增量註釋已生成表 | 版本控制提交前審查生成代碼,刪除冗餘方法 |
| 調整 | 實體類去冗餘、Mapper 接口精簡、XML 修正 SQL | 保留 MBG 註釋標識(如 `@mbg.generated`)便於未來重新生成合併 |
| 整合 | 補全 Service/Controller、配置事務、驗證測試 | 單元測試覆蓋 Mapper 方法,集成測試覆蓋完整鏈路 |
MyBatis Generator 是加速開發的利器,但生成的代碼只是「骨架」,業務邏輯、驗證、異常處理、安全控制仍需開發者注入「血肉」。建立「生成→審查→精簡→測試」的標準化流程,才能真正發揮其價值。