spring boot+mybatis-plus配置读写分离

对于mysql主从机制的读写分离,对于写操作写入主库,读取操作读取从库
一、安装依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.3.6</version>
        </dependency>

如果是spring boot3则引入如下依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
            <version>4.3.1</version>
        </dependency>

二、配置文件配置数据源

spring:
  datasource:
    dynamic:
      #默认数据源
      primary: master
      datasource:
        master:
          username: root
          password: xxxxx
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/xx?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
		  hikari:
            max-lifetime: 70000
        slave:
          username: root
          password: xxx
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/xx?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
          hikari:
            max-lifetime: 70000

三、在service,如果是读取操作的话,则需要加上注解@DS(“slave”)即可,可看如下示例

@Service
public class TUserServiceImpl extends ServiceImpl<TUserMapper, TUser> implements ITUserService {

    //读取走从库
    @Override
    @DS("slave")
    public List<TUser> getUserList(){
        return baseMapper.selectList(null);
    }

    //写操作默认走主库
    @Override
    @Transactional
    public String adUser(TUser user){
        baseMapper.insert(user);
        return "OK";
    }
}
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis-Plus 是一个在 MyBatis 基础上进行增强的持久层框架,提供了很多方便开发的功能和工具。关于 MyBatis-Plus读写分离,可以通过配置动态数据源和使用 MyBatis-Plus 提供的注解来实现。 读写分离是指将数据库的操作和写操作分别在不同的数据库实例上进行,以提高系统的并发能力和性能。在 MyBatis-Plus 中,可以通过使用多个数据源来实现读写分离。 首先,需要配置多个数据源,一个用于操作,一个用于写操作。可以使用 Spring Boot 提供的配置方式,或者使用 MyBatis-Plus 提供的 DynamicDataSource 动态数据源。 然后,在需要进行操作的方法上,可以使用 MyBatis-Plus 提供的 @Slave 注解,指定使用数据源。例如: ```java @Slave public List<User> getUserList() { // ... } ``` 在需要进行写操作的方法上,则不需要特别指定数据源,默认会使用主数据源。 最后,在 MyBatis-Plus配置文件中,需要配置动态数据源的切换策略。可以通过使用 AbstractRoutingDataSource 类来实现切换策略,根据方法上的注解来决定使用哪个数据源。 这样配置之后,当调用带有 @Slave 注解的方法时,MyBatis-Plus 会自动切换到数据源;调用其他方法时,会使用写数据源。从而实现了读写分离的功能。 需要注意的是,读写分离配置还涉及到数据库的主从同步和数据一致性等问题,在配置过程中需要综合考虑这些因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值