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

对于mysql主从机制的读写分离,对于写操作写入主库,读取操作读取从库

一、安装依赖

复制代码
<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.3.6</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
        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

三、在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";
    }
}
相关推荐
神奇小汤圆14 分钟前
科研神器再升级!Claude Code 全套 Skills,16 大科研场景全覆盖!
后端
东坡白菜24 分钟前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
tyung28 分钟前
Go 手写有界 SPSC 环形队列:无 CAS、无锁、Cache 友好的无锁模型
后端·go
咕白m62530 分钟前
使用 C# 在 Excel 中应用多种字体样式
后端·c#
唐青枫30 分钟前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
Java编程爱好者32 分钟前
放弃 Spring AI?这 3 个开源框架,才是让 SpringBoot 玩转 AI Agent 的正解
后端
二月龙33 分钟前
伪类与伪元素深度解析:before/after 实用案例
后端
码事漫谈1 小时前
时序数据库2026盘点:国产数据库如何以“融合多模”走出差异化之路?
前端·后端
浮游本尊1 小时前
Java学习第42天 - Spring 事务传播、隔离级别、锁机制与并发一致性
后端
道友可好1 小时前
让 AI 自己验收,等于让学生自己批卷
前端·人工智能·后端