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=ff8b7f852278821525f11666b36f180ahttps://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: 8090

spring:
  datasource:
    dynamic:
      primary: master
      datasource:
        master:
          #type: com.alibaba.druid.pool.DruidDataSource
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://狗东西把老子数据库给删了 草泥马 真几把闲的蛋疼:3306/test001?useSSL=false&useUnicode=true&characterEncoding=utf-8
          username: 
          password: 

        slave_1: # slave 是组名,可以自定义; 1 是从库名 ,可以多个从库在slave组中, 自动轮询 负载均衡
          #type: com.alibaba.druid.pool.DruidDataSource
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://狗东西把老子数据库给删了 草泥马 真几把闲的蛋疼:3307/test001?useSSL=false&useUnicode=true&characterEncoding=utf-8
          username: 
          password: 



mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启驼峰映射

1.3 druid数据源冲突解决 -> 视频15:20 秒处

项目优化Day2-06-读写分离案例_入门案例_哔哩哔哩_bilibili项目优化Day2-06-读写分离案例_入门案例是黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目的第176集视频,该合集共计191集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV13a411q753?p=176&spm_id_from=pageDriver&vd_source=ff8b7f852278821525f11666b36f180a

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值