SpringBoot整合Mybatisplus配置多数据源

今天我们分享多数据源的另外一直方式,SpringBoot整合Mybatisplus配置多数据源,此种方式配置相对简单,都是封装好的API,上手容易;底层原理也是继承 AbstractRoutingDataSource等相关类,只是封装更好一些,开箱即用,少走弯路!此篇我们分享业务比较简单的方式配置数据源,既多个固定的数据源,通过注解选择使用哪个数据源!废话少说,切入正题。

1、相关核心包引入

     
           org.springframework.boot
           spring-boot-starter-web
       
       
           com.baomidou
           mybatis-plus-boot-starter
           3.5.0
       
       
          com.baomidou
          dynamic-datasource-spring-boot-starter
           3.5.0
       
       
           mysql
           mysql-connector-java
           runtime
       
       
           com.alibaba
           druid-spring-boot-starter
           1.1.20
       

2、相关数据源yml 配置:

server:
  port: 8000
spring:
  datasource:
    dynamic:
      primary: master# 配置默认数据库,及没有注解指定时走的数据库
      #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: false
      datasource:
        master: # 数据源1配置
          url: jdbc:mysql://localhost:3306/user_db1?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave: # 数据源2配置
          url: jdbc:mysql://localhost:3306/user_db2?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
      durid:
        initial-size: 1
        max-active: 20
        min-idle: 1
        max-wait: 60000
  autoconfigure:
    exclude:  com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 去除druid自动加载的配置,也可以在启动类里添加

3、启动类配置:

//去掉自动加载数据源的配置类
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class TestApplication {
  public static void main(String[] args) {
    SpringApplication.run(TestApplication.class, args);
  }
}

释疑:服务启动时DruidDataSourceAutoConfigure会注入一个DataSourceWrapper,其会在原生的spring.datasource下找 url, username, password 等信息。动态数据源 URL 等配置是在 dynamic 下,因此需要排除,否则会报错。

排除方式有两种,一种是上述配置文件排除,还有一种可以在项目启动类排除,上面已经演示!

4、样例注解配置演示:

使用@DS指定数据源,给使用非默认数据源添加注解@DS,比如@DS("slave"),如果不加或者加@DS("master"),就会走默认数据源;@DS可以注解在 方法 上和 类 上,同时存在方法注解优先于类上注解;注解在 controller层、service 实现或 mapper 接口方法上,不要同时在 service 和 mapper 注解;官方强烈建议加在service上,主要要保证事务!

4.1、mapper层

@DS("slave") 
public interface UserInfoMapper extends BaseMapper {
}

4.2、service层

@Service
@DS("slave")
public class UserServiceImpl extends ServiceImpl implements IUserService {}

4.3、controller层

@RestController
@RequestMapping("/exportTest")
@DS("slave")
public class MyTestController {

..........省略
}

4.4、方法上:

@Select("SELECT * FROM userInfo")
@DS("slave")
List selectAll();

如果遇到事务问题可参考:多数据源事务相关问题

到此,基本操作分享完毕,也是可以直接使用的,大家可以详细测试验证一下,定会收获很多!下篇我们分享根据用户完全动态获取数据源,实战性更强,敬请期待!

你可能感兴趣的:(spring,boot相关,Mybatis,mybatis,spring,boot)