【筆記】MyBatis Plugin - BaseMapper 製作

今天我們接續上次的【筆記】MyBatis Dynamic SQL
這次要跟大家介紹的是『如何在 Mybatis Generator 中使用客製化 Plugin』。

Quick Start

如果我們沒有特別製作客製化的 plugin 使用 Mybatis Generator 時,我們有幾張資料表就會產生相對應的幾個 Mapper 檔案,如:

如果我們希望能建立一個 BaseMapper 讓其他的產生的 Mapper 都繼承這個 BaseMapper 我們應該怎麼調整呢?

先準備資料庫與 init data

Include Dependencies

build.gradles

1
2
3
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1'
implementation 'org.mybatis.generator:mybatis-generator-core:1.4.0'
implementation 'org.mybatis.dynamic-sql:mybatis-dynamic-sql:1.1.4'

先建立 BaseMapper

撰寫 Plugin

說明:

  • 由於我是使用 Spring framework 因此需要在產生的 Mapper 檔加上 Repository 的 annotation,防止 IDE 出現警示。
  • 由於當有兩個欄位是 PK 時會產生 {TableName}Key,只有一個欄位是 PK 時則沒有,所以直接取該型態。

建立 myBatis-generator.xml

說明:

  • targetRuntime 如果設定是 MyBatis3
  • 添加 plugin

建立 MBGenerator.java

執行 Main 程式

產生結果

實際應用

  • 建立一個 BaseService.java
  • 撰寫 AdmUserServiceImpl.java
1
2
3
4
5
6
7
8
9
10
@Service
public class AdmUserServiceImpl extends BaseService<AdmUser, AdmUserExample, Long> implements AdmUserService {

@Override
public AdmUser findAdmUserByUsername(String username) {
AdmUserExample admUserExample = new AdmUserExample();
admUserExample.createCriteria().andUsernameEqualTo(username);
return findOneByExample(admUserExample);
}
}

謝謝您的支持與鼓勵

Ads