首页 > 其他分享 >【Mybatis-Plus】Mybatis-Plus多数据源(三)

【Mybatis-Plus】Mybatis-Plus多数据源(三)

时间:2024-01-19 23:44:09浏览次数:40  
标签:jdbc 数据源 Plus mysql Mybatis com DS

  参考官网:多数据源 | MyBatis-Plus (baomidou.com)

使用方法

  1、引入dynamic-datasource-spring-boot-starter。

1 <dependency>
2     <groupId>com.baomidou</groupId>
3     <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
4     <version>3.5.2</version>
5 </dependency>

  2、配置数据源。

 1 spring:
 2   datasource:
 3     dynamic:
 4       primary: master #设置默认的数据源或者数据源组,默认值即为master
 5       strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
 6       datasource:
 7         master:
 8           url: jdbc:mysql://127.0.0.1:3306/test_mybatis_plus?allowPublicKeyRetrieval=true&useSSL=false
 9           username: root
10           password: 123456
11           driver-class-name: com.mysql.cj.jdbc.Driver
12         slave_1:
13           url: jdbc:mysql://127.0.0.1:3306/test_mybatis_plus2?allowPublicKeyRetrieval=true&useSSL=false
14           username: root
15           password: 123456
16           driver-class-name: com.mysql.cj.jdbc.Driver
17 
18 
19 mybatis-plus:
20   configuration:
21     # 日志输出SQL
22     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
23   # mapper xml文件默认位置:classpath*:/mapper/**/*.xml
24 #  mapper-locations: classpath*:/mapper/**/*.xml
25   # 配置类型别名对应的包
26 #  type-aliases-package: com.test.mybatisplus.entity

  3、使用 @DS 切换数据源

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

注解结果
没有@DS 默认数据源
@DS("dsName") dsName可以为组名也可以为具体某个库的名称

 

1 @DS("master")
2 public interface EmployeeMapper extends BaseMapper<Employee> {
3 
4 }
1 @DS("slave_1")
2 public interface ProductMapper extends BaseMapper<Product> {
3 
4 }

 

  4、测试类

 1 @SpringBootTest
 2 public class SampleTest {
 3 
 4     @Autowired
 5     private EmployeeMapper employeeMapper;
 6     @Autowired
 7     private ProductMapper productMapper;
 8 
 9 
10     @Test
11     public void testSelectList() {
12         System.out.println(("----- selectAll method test ------"));
13         List<Employee> userList = employeeMapper.selectList(null);
14         userList.forEach(System.out::println);
15         List<Product> productList = productMapper.selectList(null);
16         productList.forEach(System.out::println);
17     }
18 
19 }

  5、运行测试效果

----- selectAll method test ------
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6bbab114] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@64364705 wrapping com.mysql.cj.jdbc.ConnectionImpl@4f486211] will not be managed by Spring
==>  Preparing: SELECT id,last_name,email,age FROM employee
==> Parameters: 
<==    Columns: id, last_name, email, age
<==        Row: 1, Jone, [email protected], 18
<==        Row: 2, Jack, [email protected], 20
<==        Row: 3, Tom, [email protected], 28
<==        Row: 4, Sandy, [email protected], 21
<==        Row: 5, Billie, [email protected], 24
<==      Total: 5
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6bbab114]
Employee(id=1, lastName=Jone, [email protected], age=18)
Employee(id=2, lastName=Jack, [email protected], age=20)
Employee(id=3, lastName=Tom, [email protected], age=28)
Employee(id=4, lastName=Sandy, [email protected], age=21)
Employee(id=5, lastName=Billie, [email protected], age=24)
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@603cabc4] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@1744457797 wrapping com.mysql.cj.jdbc.ConnectionImpl@6f347d7] will not be managed by Spring
==>  Preparing: SELECT id,name,price,version FROM t_product
==> Parameters: 
<==    Columns: id, name, price, version
<==        Row: 1, 外星人笔记本, 100, 2
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@603cabc4]
Product(id=1, name=外星人笔记本, price=100, version=2)
2024-01-19 23:29:43.903  INFO 41640 --- [ionShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource start closing ....
2024-01-19 23:29:43.903  INFO 41640 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : master - Shutdown initiated...
2024-01-19 23:29:43.918  INFO 41640 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : master - Shutdown completed.
2024-01-19 23:29:43.918  INFO 41640 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : slave_1 - Shutdown initiated...
2024-01-19 23:29:43.918  INFO 41640 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : slave_1 - Shutdown completed.
2024-01-19 23:29:43.918  INFO 41640 --- [ionShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource all closed success,bye

 

标签:jdbc,数据源,Plus,mysql,Mybatis,com,DS
From: https://www.cnblogs.com/h--d/p/17975859

相关文章

  • IC验证中$test$plusargs(),$value$plusargs()怎么用?有什么坑?
    各位朋友,在SystemVerilog中有两个函数作用很大,他们是:$test$plusargs(string)$value$plusargs(user_string,variable) 01 怎么用?相信从这首诗中大家已经很清楚的知道这两个函数什么作用了!没错!我们在仿真运行过程中可以“+”很多的命令字符串,而这两个函数就是与这些......
  • SpringBoot+dynamic-datasource实现多数据源(msyql、sqlserver、postgresql)手动切换
    场景SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135653227上面实现通过注解和配置文件的方式去进行多数据源操作。如果业务需求,比如查询第三方接口时提供的是sqlserver的视图连......
  • mybatis-plus作为maven分模块dao层引入的配置
    1.maven分模块说明demo-daodemo-webdemo-web中引用demo-dao层,进行crud2.数据库配置放到哪里?放到demo-web模块的application.propertiesspring.datasource.driver-class-name=@[email protected][email protected]@[email protected]@......
  • 手写 Mybatis-plus 基础架构(工厂模式+ Jdk 动态代理统一生成代理 Mapper)
    这里写目录标题前言温馨提示手把手带你解析@MapperScan源码手把手带你解析@MapperScan源码细节剖析工厂模式+Jdk代理手撕脚手架,复刻BeanDefinitionRegistryPostProcessor手撕FactoryBean代理Mapper在Spring源码中的生成流程手撕MapperProxyFactory手撕增强逻辑Invoca......
  • 关于mybatis批处理那点事
    前言最近在写爬虫的时候,需要定时的将数据爬取然后导入到数据库中(数据量有点大哦),我最开始的写法是这样的,每爬取到一条数据就立即将数据入库,IO了好多次,这样在无形之中给数据库施压了,唉我这个猪队友…不是还有一个叫做批处理的东西存在嘛!!!于是我用批处理的技术优化了一下代码,顺便研究了......
  • 把Mybatis Generator生成的代码加上想要的注释
    1前言在日常开发工作中,我们经常用MybatisGenerator根据表结构生成对应的实体类和Mapper文件。但是MybatisGenerator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题就是自动生成代码之后,我们还要自己去类文件中把注释加......
  • AT_arc115_b [ARC115B] Plus Matrix 题解
    AT_arc115_b[ARC115B]PlusMatrix题解题意给定矩阵\(C_{n\timesn}\),求两个数列\(A_n,B_n\),使得\(C_{i,j}=A_i+B_j\)。分析画出一个表格来:213243502131324可以看出来,对于任意一列\(j\),\(C_{*,j}\)都存在有\(B_j\)的贡献。那么我们......
  • 基于 SpringBoot + magic-api + Vue3 + Element Plus + amis3.0 快速开发管理系统
    Tansci-Boot基于SpringBoot2+magic-api+Vue3+ElementPlus+amis3.0快速开发管理系统Tansci-Boot是一个前后端分离后台管理系统,前端集成amis低代码前端框架,后端集成magic-api的接口快速开发框架。包含基础权限、安全认证、以及常用的一些组件功能。项目......
  • MybatisPlus集成baomidou-dynamic,多数据源配置使用、MybatisPlus分页分组等操作示例
    MybatisPlus特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作强大的CRUD操作:内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用......
  • SAS,Stata,HLM,R,SPSS和Mplus分层线性模型HLM分析学生受欢迎程度数据|附代码数据
    全文链接:http://tecdat.cn/?p=10809最近我们被客户要求撰写关于分层线性模型的研究报告,包括一些图形和统计输出。本文用于比较六个不同统计软件程序(SAS,Stata,HLM,R,SPSS和Mplus)的两级分层线性模型的过程和输出下面介绍的六个模型都是两级分层模型的变体,也称为多级模型,这是混合模型......