首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

MyBatis Generator 實戰指南:從配置到生成的完整最佳實踐

     編輯:Java 綜合教學

MyBatis Generator 實戰指南:從配置到生成的完整最佳實踐

MyBatis Generator (MBG) 是官方提供的代碼生成工具,能根據數據庫表結構自動生成 Model、Mapper 接口、XML 映射文件,極大提升開發效率。本文詳細記錄從下載、目錄準備、配置文件編寫、命令行生成到項目集成的全流程,並深度解析核心配置項含義。

一、MBG 核心價值

  • 自動生成 Model、Mapper 接口、XML(含基礎 CRUD、Example 動態查詢、條件插入/更新)。
  • 項目初期數據庫頻繁變更時,一鍵重新生成,避免手動同步錯誤。
  • 字段多(10+)的表自動生成屬性、JDBC/Java 類型映射,避免手寫錯誤(如 TIMESTAMP 對應 Date 而非 LocalDateTime 導致 SqlSessionFactory 初始化失敗)。

二、快速上手 5 步走

1. 下載核心 JAR

https://github.com/mybatis/generator/releases → mybatis-generator-core-x.x.x.jar

2. 準備目錄結構

project-root/
├── generatorConfig.xml   # 核心配置
├── src/                  # 生成代碼輸出目錄 (targetProject)
├── mybatis-generator-core-1.3.2.jar
└── mysql-connector-java-5.1.37.jar

3. 編寫 generatorConfig.xml 核心配置

<?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>
    <classPathEntry location="mysql-connector-java-5.1.37.jar"/>
    <context id="mysql" targetRuntime="MyBatis3Simple">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://ip:3306/dbname"
            userId="root" password="xxx">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <javaModelGenerator targetPackage="com.xxx.model" targetProject="src">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="com.xxx.mapper" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.mapper" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <table tableName="T_USER" domainObjectName="User"
            enableCountByExample="false" enableUpdateByExample="false"
            enableDeleteByExample="false" enableSelectByExample="false"
            selectByExampleQueryId="false"/>
    </context>
</generatorConfiguration>

4. 執行生成命令

java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

5. 將生成的文件複製到項目對應模塊

保持包結構一致,刷新項目即可使用。

三、核心配置項深度解析(節選高頻項)

元素/屬性作用關鍵值/建議
context@targetRuntime生成代碼風格MyBatis3Simple:不生成 Example 類,更簡潔;MyBatis3:功能全
context@defaultModelTypeModel 拆分策略flat:單類(推薦);hierarchical:主鍵/Blob/其它分三類
javaModelGenerator@targetPackageModel 包路徑必須與項目真實包一致,否則需手動調整 XML namespace
javaClientGenerator@typeMapper 生成方式XMLMAPPER:接口+XML(推薦);ANNOTATEDMAPPER:純注解
table@enableXXXByExample控制 Example 方法生成簡化風格建議全部 false,僅保留主鍵 CRUD
columnOverride列屬性覆蓋指定 property(屬性名)、javaType、jdbcType、typeHandler
ignoreColumn忽略列如 deptId 不想生成實體屬性/映射
generatedKey主鍵回寫策略MySQL: sqlStatement="MySql" (SELECT LAST_INSERT_ID())

四、避坑指南

  1. 大小寫敏感:MySQL 表名大小寫取決於 lower_case_table_names 系統變量,配置 tableName 時建議與數據庫定義完全一致,或設置 delimitIdentifiers="true"。
  2. 類型映射陷阱:DATETIME/TIMESTAMP 默認映射 java.util.Date,若項目用 Java 8 LocalDateTime,必須在 columnOverride 中顯式指定 javaType="java.time.LocalDateTime" 並配合 typeHandler。
  3. targetProject 目錄必須預先存在,MBG 不會自動創建。
  4. 版本兼容:MBG 1.4.0+ 支持 MyBatis 3.5+,舊版本可能不支持新特性。

五、總結

MyBatis Generator 是數據庫驅動開發的利器。掌握核心配置、建立團隊統一模板、配合 CI/CD 自動化生成,能讓數據庫變更從「痛點」變為「常態操作」。建議項目初期即引入,並將 generatorConfig.xml 納入版本控制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved