小工具知识网

当前位置: 首页 > 行业知识 > Spring Boot整合MyBatis Plus配置多数据源

行业知识

Spring Boot整合MyBatis Plus配置多数据源

2026-11-15 06:47:57 来源:互联网转载

Spring Boot 专���:https://blog.csdn.net/dkbnull/category_9278145.html

Spring Cloud 专栏:https://blog.csdn.net/dkbnull/category_9287932.html

GitHub:https://github.com/dkbnull/SpringBootDemo

Gitee:https://gitee.com/dkbnull/SpringBootDemo

在 Spring Boot整合MyBatis配置多数据源 文章中,展示了Spring Boot整合Mybatis配置多数据源的方法。那么,如果使用MyBatis Plus,如何配置多数据源呢?

官方文档:https://baomidou.com/pages/a61e1b/

MyBatis Plus连接数据库参考:Spring Boot整合MyBatis Plus连接数据库

0 开发环境

  • JDK:1.8
  • Spring Boot:2.1.1.RELEASE
  • MySQL:5.7.13

    1 引入依赖

        com.baomidou    mybatis-plus-boot-starter    3.5.4    mysql    mysql-connector-java    runtime    com.baomidou    dynamic-datasource-spring-boot-starter    3.5.2    org.projectlombok    lombok    1.18.30    provided

    2 配置数据源

    server:  port: 8090spring:  datasource:    dynamic:      primary: master       #设置默认的数据源或者数据源组,默认值即为master      strict: false         #严格匹配数据源,默认false。true未匹配到指定数据源时抛异常,false使用默认数据源      datasource:        master:          url: jdbc:mysql://127.0.0.1:3306/test_master?characterEncoding=utf8&serverTimezone=GMT%2B8          username: root          password: root          driver-class-name: com.mysql.cj.jdbc.Driver     #3.2.0开始支持SPI可省略此配置        slave:          url: jdbc:mysql://127.0.0.1:3306/test_slave?characterEncoding=utf8&serverTimezone=GMT%2B8          username: root          password: root          driver-class-name: com.mysql.cj.jdbc.Driver#mybatis-plus:  mapper-locations: classpath:mapper/*.xml  type-aliases-package: cn.wbnull.springbootdemo.entity

    3 使用@DS切换数据源

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

    注解结果
    没有@DS默认数据源
    @DS(“dsName”)dsName可以为组名也可以为具体某个库的名称
    @DS("slave")@Servicepublic class UserInfoService {    @Autowired    private UserInfoMapper userInfoMapper;    public List query() {        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();        return userInfoMapper.selectList(queryWrapper);    }}

    4 测试

    直接使用 Spring Boot整合MyBatis配置多数据源 中创建的数据库表

    4.1 新建实体类

    @Datapublic class User implements Serializable {    private static final long serialVersionUID = 1L;    @TableId(value = "id", type = IdType.AUTO)    private int id;    private String name;}
    @Datapublic class UserInfo implements Serializable {    private static final long serialVersionUID = 1L;    @TableId(value = "id", type = IdType.AUTO)    private Integer id;    @TableField("userCode")    private String userCode;    @TableField("userName")    private String userName;    private String password;}

    注:这里因为数据库里字段是驼峰式命名,所以使用 @TableField 指定对应的数据库字段名,也可以通过yml配置关闭属性映射

    mybatis-plus:  mapper-locations: classpath:mapper/*.xml  type-aliases-package: cn.wbnull.springbootdemo.entity  configuration:    map-underscore-to-camel-case: false

    4.2 新建Mapper

    @Repositorypublic interface UserMapper extends BaseMapper {}
    @Repositorypublic interface UserInfoMapper extends BaseMapper {}

    4.3 新建映射文件

                                                id, name    
                                                                id, userCode, userName, password    

    4.4 新建Service

    @Servicepublic class UserService {    @Autowired    private UserMapper userMapper;    public List query() {        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();        return userMapper.selectList(queryWrapper);    }}
    /** * 3使用@DS切换数据源 中已展示过该类 */@DS("slave")@Servicepublic class UserInfoService {    @Autowired    private UserInfoMapper userInfoMapper;    public List query() {        LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();        return userInfoMapper.selectList(queryWrapper);    }}

    4.5 新建Controller

    @RestController@RequestMapping("user")public class UserController {    @Autowired    public UserService userService;    @PostMapping(value = "query")    public List query() {        return userService.query();    }}
    @RestController@RequestMapping("userInfo")public class UserInfoController {    @Autowired    public UserInfoService userInfoService;    @PostMapping(value = "query")    public List query() {        return userInfoService.query();    }}

    4.6 测试

    使用Postman测试,输出结果如下

    4.6.1 master select

    4.6.2 slave select

上一篇:如何在电视上下载并安装腾讯视频应用

下一篇:同花顺怎么无法连接服务器?