開發 Spring Boot 應用時使用 MyBatis 的相關依賴包……
說明:本文首次發佈於 2023-7-25 10點(北京時間),其中的“最新”是這個時間點最新。
0、序章
梳理開發 Spring Boot 項目時,使用各種 MyBatis 相關依賴包的版本 及其 關係。
1、Spring Boot 2.7.13 默認 MyBatis Framework
前幾日打開下面的網站,選擇 Spring boot 的版本是 2.7.13:
此時,選擇 MyBatis Framework 依賴 得到的是 mybatis-spring-boot-starter 2.3.1,兩個依賴,如下:
--
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
<!-- 測試用 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>2.3.1</version>
<scope>test</scope>
</dependency>
檢查 mybatis-spring-boot-starter 的依賴,其使用的 mybatis 是 3.5.13、mybatis-spring 是 2.1.1:
--
MyBatis: PageHelper(分頁插件)
pagehelper-spring-boot-starter
https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter
--
最新版本是 1.4.7,依賴方式:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.7</version>
</dependency>
其依賴的 mybatis-spring-boot-starter 也是 2.3.1。
mybatis-spring-boot-starter 最新版本
https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
最新版本:3.0.2 發佈於 May 20, 2023
3+ 的版本,應該是 爲了配合 Spring Boot 3+ 的版本使用的。
2、Spring Boot 2.7.13 中使用 mybatis-plus
mybatis-plus 官網:
依賴包名 mybatis-plus-boot-starter:
最新版本 3.5.3.1,引入依賴:
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
不過,mvnrepository.com 顯示,該版本存在漏洞:
檢查 mybatis-plus-boot-starter 的依賴,其使用的 mybatis 是 3.5.10(還有 3.5.9)、mybatis-spring 是 2.0.7(和 上文的 mybatis-spring-boot-starter 2.3.1 的依賴不同!):
--
避免依賴衝突
在 mybatis-plus 官網提到,引入 mybatis-plus 後,就不要直接引入 mybatis包了。
從上面的 調查也可以看到,最新的 mybatis-plus-boot-starter 和 mybatis-spring-boot-starter 依賴的底層 包的版本可能不一致。
官文:
https://baomidou.com/pages/bab2db/#spring
mybatis-plus 分頁查詢
不需要 額外引入 pagehelper 了,參考官文,做下面的配置即可使用:
https://baomidou.com/pages/2976a3/#mybatisplusinterceptor
自動分頁: PaginationInnerInterceptor
下面是 官文配置的 Java 代碼:
MybatisPlusConfig.java 分頁配置
// https://baomidou.com/pages/2976a3/#spring-boot
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 新的分頁插件,一緩和二緩遵循mybatis的規則,需要設置 MybatisConfiguration#useDeprecatedExecutor = false 避免緩存出現問題(該屬性會在舊插件移除後一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2)); // 注意選擇數據庫;還有更多屬性設置!
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
使用示例,請參考 mybatis-plus 官文。
說明,
1、mybatis-plus 很強大;
2、mybatis-plus 還有更多 lusinterceptor ,待解鎖;
3、Spring Boot 3.1.2 默認 MyBatis Framework
進入 https://start.spring.io/ ,選擇 3.1.2,Java 選擇 17:
選擇 MyBatis Framework ,下載,檢查 其中的 mybatis 版本:果然使用了最新的 mybatis-spring-boot-starter 包
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.2</version>
<scope>test</scope>
</dependency>
從 https://mvnrepository.com/ 可以看到它的 mybatis 版本依賴:mybatis 版本還是 3.5.13,而 mybatis-spring 版本則爲 3.0.2 了。
注,尚未安裝 JDK 17+,無法打開項目,本文的探索到此爲止。
Spring Boot 3.1.2 下使用 mybatis-plus
從 https://mvnrepository.com/ 可以看到,適配 Spring Boot 3 的 mybatis-plus 尚未發佈,最新發布日期爲 Dec 30, 2022。
當前,mybatis-plus-boot-starter 的最新版本就是上面介紹的 mybatis-plus-boot-starter。
--
這樣來看,Spring Boot 3 中是否可以使用 mybatis-plus 還需驗證(實踐),TODO
4、mybatis 最新版本
https://mvnrepository.com/artifact/org.mybatis/mybatis
3.5.13 @ Mar 11, 2023
--
5、pagehelper 最新版本
pagehelper
https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper
5.3.3 @ Jun 03, 2023
--
依賴:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.3</version>
</dependency>
注意,該版本存在漏洞:
其底層依賴包:
pagehelper-spring-boot-starter 最新版本
https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter
1.4.7 @ Jun 03, 2023
--
依賴:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.7</version>
</dependency>
其底層依賴包:
看起來也對 Spring Boot 3+ 的應該支持的不太好啊。
--
---END---
本文鏈接:
https://www.cnblogs.com/luo630/p/17578871.html
參考文檔
mybatis-plus 官網
3、https://mybatis.org/mybatis-3/zh/index.html
mybatis 3 官網
注,沒有舊版本的官網了。
4、
ben發佈於博客園
ben發佈於博客園