Like Share Discussion Bookmark Smile

J.J. Huang   2019-03-31   Spring Boot   瀏覽次數:

SpringBoot - 第十七章 | Mybatis Generator 工具

在前面的文章中 第十六章 - SpringBoot MyBatis整合 (XML方式) 介紹如何使用MyBatis的透過XML的方式基本訪問資料庫。

然後專案的過程中,不可能是一張表一張表去建置的,往往都是一開始就已經把基礎的架構都設計的差不多。所以在開發的過程中無法一張表一張表去產生Entity、Dao、Mapper…等等。這時候我們可以透過「Mybatis Generator」工具來協助產生。

下面將會介紹 Eclipse 使用 Mybatis Generator 程式碼生成。

使用範例

安裝MyBatis Generator (1.3.7)

  • 開啟 Eclipse -> Help -> Eclipse Marketplace
  • 搜尋 MyBatis -> MyBatis Generator -> Install
  • 安裝過程省略直至安裝完畢

因為作者這邊已經安裝過了,網路上也有很多其他大大所寫的安裝教學,就不特別示範安裝過程。

資料庫範例

這邊用Customer來做範例

1
2
3
4
5
6
7
8
9
10
11
DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(64) DEFAULT NULL COMMENT '姓名',
`age` smallint(3) DEFAULT NULL COMMENT '年齡',
`create_by` varchar(50) NOT NULL COMMENT '建立人員',
`create_dt` datetime NOT NULL COMMENT '建立時間',
`modify_by` varchar(50) DEFAULT NULL COMMENT '修改人員',
`modify_dt` datetime DEFAULT NULL COMMENT '修改時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

建立Package

1
2
3
com.jj.learning.springboot.chapter17.domain
com.jj.learning.springboot.chapter17.dao
resources.mapper

這邊為了突顯可以指定自己要產生的位置,故把Entity和Dao做拆分,Package基本上照開發習慣或是個人習慣或是參照其他我路大大的去做一些幾本規範來做區分即可。

MyBatis Generate Configuration File

產生 generatorConfig.xml 檔案

產生後的 generatorConfig.xml 預設內容

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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="context1">
<jdbcConnection connectionURL="???" driverClass="???" password="???" userId="???" />
<javaModelGenerator targetPackage="???" targetProject="???" />
<sqlMapGenerator targetPackage="???" targetProject="???" />
<javaClientGenerator targetPackage="???" targetProject="???" type="XMLMAPPER" />
<table schema="???" tableName="???">
<columnOverride column="???" property="???" />
</table>
</context>
</generatorConfiguration>

編輯 generatorConfig.xml

以下做一個最簡單的設定示範,當然還有更多的參數可以做配置,例如commentGenerator這就是我特別加上的,不然產出來的類會有很多的註解。詳細介紹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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的名稱,另如mysql、mssql做一些標示,方便自己區分使用 -->
<context id="context1">
<!-- 去除註解 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- connectionURL資料庫位置、driverClass資料庫連線驅動位置、password資料庫登入密碼、userId資料庫登入帳號 -->
<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/test" driverClass="com.mysql.jdbc.Driver" password="root" userId="root" />
<!-- 產生Entity的設定 -->
<javaModelGenerator targetPackage="com.jj.learning.springboot.chapter17.domain" targetProject="chapter-17/src/main/java" />
<!-- 產生Mapper.xml檔的設定 -->
<sqlMapGenerator targetPackage="mapper" targetProject="chapter-17/src/main/resources" />
<!-- 產生Dao的設定 -->
<javaClientGenerator targetPackage="com.jj.learning.springboot.chapter17.dao" targetProject="chapter-17/src/main/java" type="XMLMAPPER" />
<!-- 指定資料庫的表 -->
<table tableName="customer">
</table>
</context>
</generatorConfiguration>

執行 generatorConfig.xml

generatorConfig.xml -> Run As -> Run Mybatis Generator

產生後的檔案如下

1
2
3
4
5
6
/chapter-17/src/main/java/com/jj/learning/springboot/chapter17/domain/Customer.java
/chapter-17/src/main/java/com/jj/learning/springboot/chapter17/domain/CustomerExample.java

/chapter-17/src/main/java/com/jj/learning/springboot/chapter17/dao/CustomerMapper.java

/chapter-17/src/main/resources/mapper/CustomerMapper.xml

結構圖

注:透過「Mybatis Generator」產生的Dao並沒有加上@Mapper的註解,建議透過@MapperScan來做注入。

這邊只是簡單介紹了Mybatis Generator的使用方式,更詳細的使用方式建議參考官方的 詳細介紹 。 而生產出來的程式碼,這邊也沒有特別寫出來,請到我的 Github 上面找 chapter-17 ,就有所有範例及程式碼了。