現代 Java 專案普遍採用 Maven 管理依賴與建置。本文詳細說明如何配置 mybatis-generator-maven-plugin,自動根據資料庫表結構生成 MyBatis 所需的 Model、Mapper XML 與 Mapper Interface 代碼。
在 <plugins> 區塊加入以下配置:
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
預設讀取路徑:src/main/resources/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>
<!-- JDBC 驅動 JAR 路徑(建議改用 Maven 依賴管理)-->
<classPathEntry location="D:\repo\mysql\mysql-connector-java\5.1.6\mysql-connector-java-5.1.6.jar" />
<context id="context1" targetRuntime="MyBatis3">
<!-- 資料庫連線設定 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=UTF-8"
userId="root" password="password" />
<!-- Model 實體類生成位置 -->
<javaModelGenerator targetPackage="com.example.model"
targetProject="src/main/java" />
<!-- Mapper XML 生成位置 -->
<sqlMapGenerator targetPackage="com.example.mapper.xml"
targetProject="src/main/resources" />
<!-- Mapper Interface 生成位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.mapper"
targetProject="src/main/java" />
<!-- 指定要生成的資料表 -->
<table schema="your_schema" tableName="tb_user" />
<table schema="your_schema" tableName="tb_role" />
<table schema="your_schema" tableName="tb_permission" />
<!-- 更多表格... -->
</context>
</generatorConfiguration>
| 元素 | 用途 |
|---|---|
| jdbcConnection | 資料庫連線參數(驅動、URL、帳號、密碼) |
| javaModelGenerator | 實體類套件與輸出目錄 |
| sqlMapGenerator | Mapper XML 檔案套件與輸出目錄 |
| javaClientGenerator | Mapper 介面套件與輸出目錄,type="XMLMAPPER" 表示生成 XML 對應介面 |
| table | 指定要逆向工程的資料表,可多個 |
pom.xmlmybatis-generator:generatecd 專案根目錄
mvn mybatis-generator:generate
<overwrite>true</overwrite> 會覆蓋既有檔案,若有手動修改的 Mapper 請先備份MyBatis3 可生成符合 MyBatis 3.x 風格的代碼<table> 的 enableSelectByExample="false" 等屬性減少生成代碼量透過 Maven 整合 MyBatis Generator,可大幅減少手寫重複性 DAO 代碼的工作量,確保 Model 與資料庫結構同步,提升開發效率與維護性。