SpringBoot整合Mybatisplus配置多数据源

今天我们分享多数据源的另外一直方式,SpringBoot整合Mybatisplus配置多数据源,此种方式配置相对简单,都是封装好的API,上手容易;底层原理也是继承 AbstractRoutingDataSource等相关类,只是封装更好一些,开箱即用,少走弯路!此篇我们分享业务比较简单的方式配置数据源,既多个固定的数据源,通过注解选择使用哪个数据源!废话少说,切入正题。

1、相关核心包引入

     <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
       <dependency>
           <groupId>com.baomidou</groupId>
           <artifactId>mybatis-plus-boot-starter</artifactId>
           <version>3.5.0</version>
       </dependency>
       <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
           <version>3.5.0</version>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <scope>runtime</scope>
       </dependency>
       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid-spring-boot-starter</artifactId>
           <version>1.1.20</version>
       </dependency>

2、相关数据源yml 配置:

server:
  port: 8000
spring:
  datasource:
    dynamic:
      primary: master# 配置默认数据库,及没有注解指定时走的数据库
      #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      strict: false
      datasource:
        master: # 数据源1配置
          url: jdbc:mysql://localhost:3306/user_db1?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave: # 数据源2配置
          url: jdbc:mysql://localhost:3306/user_db2?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=GMT%2B8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
      durid:
        initial-size: 1
        max-active: 20
        min-idle: 1
        max-wait: 60000
  autoconfigure:
    exclude:  com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 去除druid自动加载的配置,也可以在启动类里添加

3、启动类配置:

//去掉自动加载数据源的配置类
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class TestApplication {
  public static void main(String[] args) {
    SpringApplication.run(TestApplication.class, args);
  }
}

释疑:服务启动时DruidDataSourceAutoConfigure会注入一个DataSourceWrapper,其会在原生的spring.datasource下找 url, username, password 等信息。动态数据源 URL 等配置是在 dynamic 下,因此需要排除,否则会报错。

排除方式有两种,一种是上述配置文件排除,还有一种可以在项目启动类排除,上面已经演示!

4、样例注解配置演示:

使用@DS指定数据源,给使用非默认数据源添加注解@DS,比如@DS("slave"),如果不加或者加@DS("master"),就会走默认数据源;@DS可以注解在 方法 上和 类 上,同时存在方法注解优先于类上注解;注解在 controller层、service 实现或 mapper 接口方法上,不要同时在 service 和 mapper 注解;官方强烈建议加在service上,主要要保证事务!

4.1、mapper层

@DS("slave") 
public interface UserInfoMapper extends BaseMapper<User> {
}

4.2、service层

@Service
@DS("slave")
public class UserServiceImpl extends ServiceImpl<ModelMapper, Model> implements IUserService {}

4.3、controller层

@RestController
@RequestMapping("/exportTest")
@DS("slave")
public class MyTestController {

..........省略
}

4.4、方法上:

@Select("SELECT * FROM userInfo")
@DS("slave")
List<UserInfo> selectAll();

如果遇到事务问题可参考:多数据源事务相关问题

到此,基本操作分享完毕,也是可以直接使用的,大家可以详细测试验证一下,定会收获很多!下篇我们分享根据用户完全动态获取数据源,实战性更强,敬请期待!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringBoot可以使用MyBatis-Plus实现多数据源配置多数据源配置是指在一个应用中配置多个数据库连接,并能够根据需要选择使用哪个数据库。通过MyBatis-Plus,可以方便地配置和使用多个数据源。 在配置多数据源时,可以使用MyBatis-Plus提供的注解和配置类来实现。可以根据需要配置多个数据源,每个数据源对应一个数据库。例如,可以配置MySQL数据库、PostgreSQL数据库和Doris数据库作为不同的数据源。 具体配置方法可以参考引用和引用中提到的文章。这些文章详细介绍了如何在SpringBoot整合MyBatis-Plus并配置动态数据源。你可以根据这些文章的参考来配置你的多数据源。 在配置完成后,你可以根据需要在代码中选择使用哪个数据源进行数据库操作。通过配置多数据源,你可以在一个应用中同时操作多个数据库,方便实现复杂的业务逻辑。 总之,SpringBootMyBatis-Plus提供了方便的方式来配置和使用多数据源,可以满足在一个应用中操作多个数据库的需求。你可以参考相关文档并按照需求进行配置和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【应用】SpringBoot -- 基于 MyBatis-Plus 实现多数据源配置](https://blog.csdn.net/zqf787351070/article/details/127775519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [SpringBoot整合MyBatisPlus配置动态数据源的方法](https://download.csdn.net/download/weixin_38659646/12749115)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寅灯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值