MybatisPlus 配置多源数据库

首先,先导入dynamic-datasource和使用的数据库的依赖:


    mysql
    mysql-connector-java



    org.postgresql
    postgresql
    runtime



    com.baomidou
    dynamic-datasource-spring-boot-starter
    3.0.0



    com.baomidou
    mybatis-plus-boot-starter
    3.3.2

再进行配置文件的配置:
我这里配了两个数据库 主数据库为mysql 从数据库为pg 可以继续添加

spring:
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
      datasource:
        master:
          url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&useSSL=false&characterEncoding=utf-8
          username: root
          password: 123456
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave_1:
          url: jdbc:postgresql://127.0.0.1:5432/mybatisT
          username: postgres
          password: postgres
          driver-class-name: org.postgresql.Driver

这样就配置完了,只需要在调用的mapper添加@DS("数据库名")进行指定数据库的查询,主数据库不需要配置
例:
主数据库的mapper:

@Repository
@Mapper
public interface EmployeeMapper extends BaseMapper {
    
}

从数据库的mapper,需要通过@DS进行切换数据库:

@Repository
@Mapper
@DS("slave_1")
public interface db2Mapper extends BaseMapper {
    
}

主数据库的po:

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("tbl_employee")
public class Employee {

//    默认
    @TableId(type= IdType.AUTO)
    private Long id;
    private String lastName;
    private String email;
    private Integer gender;
    private Integer age;

    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    @Version
    private Integer version;

    @TableLogic
    private Integer deleted;
}

从数据库的po:

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("db2")
public class db2 {
    private int id;
    private String name;
}

测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
class MultiApplicationTests {

    @Autowired
    private EmployeeMapper employeeMapper;

    @Autowired
    private db2Mapper db2Mapper;


    //主库测试
    @Test
    void primary() {
        //匹配查询
        QueryWrapper wrapper = new QueryWrapper<>();
        //eq(键,值)相等
        wrapper.eq("last_name", "Tom");
        //查询一个
        Employee employee = employeeMapper.selectOne(wrapper);
        System.out.println(employee);
    }

    //从库测试
    @Test
    void slave_1() {
        //匹配查询
        QueryWrapper wrapper = new QueryWrapper<>();
        //eq(键,值)相等
        wrapper.eq("id", 1);
        //查询一个
        db2 db2 = db2Mapper.selectOne(wrapper);
        System.out.println(db2);
    }

}

你可能感兴趣的:(MybatisPlus 配置多源数据库)