【Plus】十、多数据源

点击访问MyBatis-Plus官网 多数据源

1、引入依赖

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

2、配置多数据源

spring:
  # 配置数据源信息
  datasource:
    dynamic:
      # 设置默认的数据源或者数据源组,默认值即为master(也可随意命名)
      primary: master
      # 严格匹配数据源,默认false.true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: false
      datasource:
        master: # 设置主数据源,名要与primary设置的一样
          url: jdbc:mysql://127.0.0.1:3306/mybatis_plus?characterEncoding=utf8&useSSL=false
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        product: # 设置从数据源,可以设置n个
          url: jdbc:mysql://127.0.0.1:3306/mybatis_plus_1?characterEncoding=utf8&useSSL=false
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

# 配置日志(用自带就OK)
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3、创建实体类及Mapper

mybatis_plus库存有user用户表,mybatis_plus_1库存有product商品表

@Data
@TableName("user")
public class User {
    @TableId(value = "user_id", type = IdType.ASSIGN_ID)
    private Long userId;
    @TableField("user_name")
    private String userName;
    private Integer age;
    private Integer sex;
    private String email;
    private Integer version;
}
@Data
@TableName("product")
public class Product {
    @TableId(value = "product_id", type = IdType.ASSIGN_ID)
    private Long productId;
    @TableField("product_name")
    private String productName;
    private BigDecimal price;
    private Integer version;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
@Mapper
public interface ProductMapper extends BaseMapper<Product> {
}

使用 @DS 注解切换数据源。

@DS可以注解在方法上或类上,同时存在则遵循就近原则,方法上注解优先于类上注解。

注解结果
没有@DS默认数据源
@DS(“dsName”)dsName可以为组名也可以为具体某个库的名称
public interface UserService extends IService<User> {
}
@DS("master")
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
public interface ProductService extends IService<Product> {
}
@DS("product")
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService {
}

4、测试

System.out.println("测试主数据源==================");
userService.list().forEach(System.out::println);
System.out.println("测试从数据源==================");
productService.list().forEach(System.out::println);
测试主数据源==================
==>  Preparing: SELECT user_id,user_name,age,sex,email,version FROM user
==> Parameters: 
<==    Columns: user_id, user_name, age, sex, email, version
<==        Row: 1, 哈哈哈, 20, 1, hahaha@haha.com, null
<==        Row: 3, 小黑, 20, null, hhi@hi.com, null
<==      Total: 2
User(userId=1, userName=哈哈哈, age=20, sex=1, email=hahaha@haha.com, version=null)
User(userId=3, userName=小黑, age=20, sex=null, email=hhi@hi.com, version=null)

测试从数据源==================
==>  Preparing: SELECT product_id,product_name,price,version FROM product
==> Parameters: 
<==    Columns: product_id, product_name, price, version
<==        Row: 1, 外星人笔记本, 100.00, 0
<==      Total: 1
Product(productId=1, productName=外星人笔记本, price=100.00, version=0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

纯纯的小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值