您当前的位置: 首页 >  mybatis

Charge8

暂无认证

  • 4浏览

    0关注

    447博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

MyBatis-Plus多数据源使用

Charge8 发布时间:2022-09-25 11:35:30 ,浏览量:4

一、MyBatis-Plus多数据源使用 1、简介

官方文档-多数据源扩展:https://baomidou.com/pages/a61e1b/#文档-documentation 多数据源详细文档(部分收费):https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611

MyBatis-Plus多数据源是一个第三方 mybatis 扩展库。

使用时需要注意的一些约定:

  • 本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
  • 配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
  • 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。
  • 默认的数据源名称为 master ,你可以通过 spring.datasource.dynamic.primary 修改。
  • 方法上的注解优先于类上注解。
  • DS支持继承抽象类上的DS,暂不支持继承接口上的DS。
2、使用

引入依赖:

    
      com.baomidou
      dynamic-datasource-spring-boot-starter
      3.5.1
    
2.1 配置数据源
# 多数据源使用
spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/mybatis_db?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT
          username: root
          password: 123456
          driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
        slave_1:
          url: jdbc:mysql://localhost:3306/mybatis_db2?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT
          username: root
          password: 123456
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave_2:
          url: jdbc:mysql://localhost:3306/mybatis_db3?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT
          username: root
          password: 123456
          driver-class-name: com.mysql.cj.jdbc.Driver
#        slave_2:
#          url: ENC(xxxxx) # 内置加密,使用请查看详细文档
#          username: ENC(xxxxx)
#          password: ENC(xxxxx)
#          driver-class-name: com.mysql.jdbc.Driver
        #......省略
        #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
2.2 使用 @DS 切换数据源

@DS 可以注解在方法上或类上,同时存在就近原则:方法上注解 优先于 类上注解。

在这里插入图片描述

@Service
//@DS("master") //指定数据源
//@DS("slave_1") //指定数据源
@DS("slave") //指定数据组,轮询slave_1和slave_2数据源
public class UserServiceImpl extends ServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
   
    //...方法
}
2.3 测试
	@Test
	public void testGetById() {
		System.out.println(("----- getById method test ------"));
		UserDO userDO = userService.getById(11L);

		System.out.println("userDO = " + userDO);
	}

注意:轮询需要启动项目,通过浏览器访问就会轮询。

– 求知若饥,虚心若愚。

关注
打赏
1664721914
查看更多评论
立即登录/注册

微信扫码登录

0.0408s