跳到主要内容
版本:4.5.0

集成 MyBatis-Plus

基础介绍​

只要引入了 mybatis-plus 相关 jar 包即自动集成,无需额外配置。请使用 mybatis-plus 3.x(对应 Spring Boot 3/4 请选择配套的 mybatis-plus 版本)。

集成步骤​

1. 项目引入 mybatis-Plus 依赖。​

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${version}</version>
</dependency>

2. 使用DS注解进行切换数据源。​

@Service
@DS("mysql")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

@DS("oracle")
public void addUser(User user) {
//do something
baseMapper.insert(user);
}
}

3.分页配置。​

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//如果是不同类型的库,请不要指定DbType,其会自动判断。
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}

4.注意事项。​

mp 内置的 ServiceImpl 在新增,更改,删除等一些方法上自带事物导致不能切换数据源。

解决办法:

  1. 复制 ServiceImpl 出来为自己的 MyServiceImpl,并去掉所有事务注解。
  2. 创建一个新方法,并在此方法上加 DS 注解. 如上面的addUser方法。

FAQ​

为什么要单独拿出来说和 mybatisPlus 的集成?

因为 mybatisPlus 重写了一些核心类,必须通过解析获得真实的代理对象。

如果自己写多数据源,则很难完成与 mp 的集成。

核心解析源码:DataSourceClassResolver https://github.com/baomidou/dynamic-datasource/blob/master/dynamic-datasource-spring/src/main/java/com/baomidou/dynamic/datasource/support/DataSourceClassResolver.java

示例项目​

https://github.com/dynamic-datasource/dynamic-datasource-samples/tree/master/spring-boot-4/mybatisplus3-sample