使用 MyBatis 相关依赖包(20230725)
开发 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发布于博客园