个人技术分享

1.maven引入

<!--多数据源-->
<dependency>
<groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

2.yml配置

server:
  port: 9008
  servlet:
    context-path: /
# CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1'; 创建test1 用户
  #FLUSH PRIVILEGES;  刷新
  #grant all privileges on study.* to 'test1'@'localhost' with grant option;  把库study 授权给test1
spring:
  datasource:
    dynamic:
      # 设置默认的数据源或者数据源
      primary: master
      strict: false #严格匹配数据源,默认false
      datasource:
        # primary: master 指定的master 就是下面的这个
        master:
          url: jdbc:mysql://localhost:3306/study?characterEncoding=utf-8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: test1
          password: test1
        slave1:
          url: jdbc:mysql://localhost:3306/studyslave?characterEncoding=utf-8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: test1
          password: test1

mybatis-plus:
  configuration:
    # 控制台打印日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 开启驼峰功能
    map-underscore-to-camel-case: true
  mapper-locations: mapper/*Mapper.xml

3.service

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserInfo>  implements IUserService {

    @Resource
    private UserMapper userMapper;

    @Resource
    private MasterUserServiceImpl masterUserService;

    @Resource
    private SlaveUserServiceImpl slaveUserService;

    @Override
    public List<UserInfo> selectById(int id){
        UserInfo userInfo1 = selectByIdFromMaster(1);
        UserInfo userInfo2 = selectByIdFromSlave(5);
        UserInfo userInfo3 = masterUserService.getById(2);
        UserInfo userInfo4 = slaveUserService.getById(2);
        return Arrays.asList(userInfo1, userInfo2,userInfo3, userInfo4);
    }

    @Override
    public UserInfo selectByIdFromMaster(int id) {
        return userMapper.selectByIdFromMaster(id);
    }

    @Override
    public UserInfo selectByIdFromSlave(int id) {
        return userMapper.selectByIdFromSlave(id);
    }

}


@DS("master")
@Service
public class MasterUserServiceImpl extends ServiceImpl<UserMapper, UserInfo> {
}


@DS("slave1")
@Service
public class SlaveUserServiceImpl extends ServiceImpl<UserMapper, UserInfo> {

}

4.mapper

@Mapper
public interface UserMapper extends BaseMapper<UserInfo> {

    @DS("master")
    @Select("select * from t_user where id = #{id}")
    public UserInfo selectByIdFromMaster(@Param("id") Integer id);

    @DS("slave1")
    @Select("select * from t_user where id = #{id}")
    public UserInfo selectByIdFromSlave(@Param("id") Integer id);



}

5.结果