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";
    }
}
相关推荐
譕痕2 分钟前
Idea 集成 智能体开发工具“千问(qwen)”
java·ide·spring·语言模型
衝鋒壹号3 分钟前
鸿蒙 PC 能跑 Docker 吗?一次从安装失败到成功运行的实测记录
后端·harmonyos
用户8181870627467 分钟前
第27章 消息丢失/重复消费的全链路排查(生产者→Broker→消费者)
java·后端
程序员cxuan8 分钟前
ChatGPT 开启无限 token
人工智能·后端·程序员
Gopher_HBo12 分钟前
beego ORM 源码(上):模型元数据与注册
后端
索隆zoro22 分钟前
Army 对 jOOQ
java·后端
泡海椒27 分钟前
规则热更新实现:JQuick-Java无需重启更新业务规则实战
后端
二炮手亮子30 分钟前
java责任链模式
java
行者-全栈开发44 分钟前
Spring Boot 接入 MaxKey 单点登录:6 个内部系统,一次登录全通行
spring boot·iam·oauth2·统一认证·oidc·sso 单点登录·maxkey
右耳朵猫AI1 小时前
PHP周刊2026W37 | Symfony 三维护版齐发、Laravel AI SDK 0.11、LSP 服务器上线
后端·php·laravel