当前位置: 首页 > news >正文

Mysql 苞米豆 多数据源 读写分离(小项目可用)

目录

0 课程视频

1 配置

1.1 加依赖

1.2 yml 配置文件 -> druid配置后报错 搞不定

2 代码

2.1 实体类

2.2 mapper -> 调用操作数据库方法 操作数据库

2.3  service -> 指定数据源 -> 用Mapper 接口 -> 操作数据库

2.4 controller -> 用户使用接口 -> 用service 方法 

3 总结

3.1 项目小 可用此方案

3.2 项目大 建议使用 sharding-jdbc

3.3 需要将原生的Druid的配置 隔离掉

3.4 事务的开启需在多数据的切换后

3.5 参考


0 课程视频

https://www.bilibili.com/video/BV1JL41117Lb/?spm_id_from=333.788&vd_source=ff8b7f852278821525f11666b36f180aicon-default.png?t=N3I4https://www.bilibili.com/video/BV1JL41117Lb/?spm_id_from=333.788&vd_source=ff8b7f852278821525f11666b36f180a

1 配置

1.1 加依赖

<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.0</version></dependency><!-- 苞米豆 多数据源 读写分离--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>2.5.4</version></dependency><!--druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10 </version></dependency><!--web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><!--mysql--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>

1.2 yml 配置文件 -> druid配置后报错 搞不定


server:port: 8090spring:datasource:dynamic:primary: masterdatasource:master:#type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://8.219.87.87:3306/test001?useSSL=false&useUnicode=true&characterEncoding=utf-8username: password: slave_1: # slave 是组名,可以自定义; 1 是从库名 ,可以多个从库在slave组中, 自动轮询 负载均衡#type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://8.219.87.87:3307/test001?useSSL=false&useUnicode=true&characterEncoding=utf-8username: password: mail:protocol: smtp # 邮件协议host: smtp.163.com # qq邮箱 smtp 服务器地址port: 25username: myz50w@163.com # 发件人邮箱地址password: HNJUACYDXLXKBFTJ #csludyslehgqbcha # 授权码default-encoding: utf-8 # 编码字符集properties:mail:debug: true # 开启 debug 模式以后会完整打印邮件发送过程的日志mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启驼峰映射

2 代码

2.1 实体类

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.time.LocalDateTime;@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user") //连接数据库表名
public class User implements Serializable {@TableId(value = "id", type = IdType.AUTO) // 解决 id 自动生成太大private Integer id; // 主键private String email; // 邮箱private String password; // 密码,使用 md5 + 盐 加密private String salt; // 盐private String confirmCode; // 确认码private LocalDateTime activationTime; // 激活失效时间private Byte isValid; // 是否可用}

2.2 mapper -> 调用操作数据库方法 操作数据库

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.test_reg.entity.User;
import org.apache.ibatis.annotations.Mapper;@Mapper 
public interface UserMapper extends BaseMapper<User> {}

2.3  service -> 指定数据源 -> 用Mapper 接口 -> 操作数据库

    @DS("slave")public List getUser(){userMapper.select(参数)}@DS("master")public Map<String, Object> Register(User user) { userMapper.insert(user);}

2.4 controller -> 用户使用接口 -> 用service 方法 

@GetMapping("getUser")public List getUser() {return userService.getUser();}@PostMapping("register")public Map<String, Object> Register(@RequestBody User user) {return userService.Register(user);}

3 总结

3.1 项目小 可用此方案

3.2 项目大 建议使用 sharding-jdbc

3.3 需要将原生的Druid的配置 隔离掉

3.4 事务的开启需在多数据的切换后

3.5 参考

苞米豆多数据源管理_baomidou 使用druid_菜菜阿菜的博客-CSDN博客网上关于动态数据源的切换的文档有很多,核心只有两种。1是构建多套环境,2是基于spring原生的AbstractRoutingDataSource切换。如果你的数据源较少,场景不复杂,选择以上任意一种都可以。如果你需要更多特性,请试着尝试本数据源。数据源分组,适用于多种场景,常见的场景如下。纯粹多库,各个库甚至可以是不同的数据库。读写分离,一主多从,多主多从。混合模式,既有主从也有单库。自动集成Druid数据源,方便监控管理。自动集成Mybatis-Plus。自定义数据源来源。(如从数据库的https://blog.csdn.net/weixin_42849706/article/details/108868208

http://www.lryc.cn/news/63845.html

相关文章:

  • OJ练习第90题——删除字符使频率相同
  • 云原生Istio基本介绍
  • Vue(简单了解Cookie、生命周期)
  • 57.网页设计图标实战
  • 浅析AI视频智能检测技术在城市管理中的场景应用
  • unity中的Line Renderer
  • 【数据架构系列-06】一文搞懂数据模型的3中类型——概念模型、逻辑模型、物理模型
  • Java——Java面向对象
  • MyBatis:生命周期、作用域、结果集映射 ResultMap、日志、分页、使用注解开发、Lombok
  • PostgreSQL安装和开启SSL加密连接【配置双向认证】
  • 【ShenYu系列】ShenYu Dubbo插件全流程源码解析
  • spring解决循环依赖的三级缓存
  • C++ - 标准库(STL)
  • Java使用 Scanner连续输入int, String 异常错误输出原因分析
  • pt13网络编程
  • 华为云 绑定/更换证书
  • 重大问题,Windows11出现重大BUG
  • 傅里叶变换解析
  • 你的登录接口真的安全吗?
  • ChatGPT情商很高,但并不适合当搜索引擎
  • Mac 地址与 IP 地址有什么区别?
  • bootloaders
  • PC或服务器装双系统
  • 嵌入式代码查看分析利器---Understand
  • 人群计数经典方法Density Map Estimation,密度图估计
  • 【华为】Smart-Link基础知识
  • 分享24个强大的HTML属性 —— 建议每位前端工程师都应该掌握
  • NIO基础 - 网络编程
  • 06.toRef 和 toRefs
  • RabbitMq、Kafka、RocketMq整理