Java多数据源最通俗讲解

  • before
  • after
    • 理论
    • 实操
      • 编码
    • 小总结

before

项目中可能会用到很多的数据源,例如目前这个项目中用到了五个数据源,那么数据源的
配置和数据源的切换就成为了一个问题,那么如何解决呢?

after

之前一直被多数据源的切换困扰,后面发现这个这个好东西,就喜欢和别人分享,mybatis-plus的@ds这个注解可以解决数据源切换的问题,我试过在方法上标这个不太好用,所以我尝试了在类上标注,发现非常好使,也别再在接口上标明就行了

理论

实操

编码

首先看在配置文件中如何配置多数据源

spring:datasource:druid:stat-view-servlet:enabled: trueloginUsername: xxxloginPassword: xxxallow:web-stat-filter:enabled: truedynamic:druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)# 连接池的配置信息# 初始化大小,最小,最大initial-size: 5min-idle: 5maxActive: 20# 配置获取连接等待超时的时间maxWait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: false# 打开PSCache,并且指定每个连接上PSCache的大小poolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,slf4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000datasource:master:url: username: xxxpassword: xxxdriver-class-name: com.mysql.cj.jdbc.Driver# 多数据源配置db1:url: username: xxxpassword: xxxdriver-class-name: com.mysql.cj.jdbc.Driverdb2:url: username: xxxpassword: xxxdriver-class-name: com.mysql.cj.jdbc.Driverdb3:url: username: xxxpassword: xxxdriver-class-name: com.mysql.cj.jdbc.Driverdb4:url: username: xxxpassword: xxxdriver-class-name: com.mysql.cj.jdbc.Driver#redis 配置redis:database: 0host: xxxlettuce:pool:max-active: 8   #最大连接数据库连接数,设 0 为没有限制max-idle: 8     #最大等待连接中的数量,设 0 为没有限制max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。min-idle: 0     #最小等待连接中的数量,设 0 为没有限制shutdown-timeout: 100mspassword: xxxport: xxxelasticsearch:rest:uris: ["http://localhost:9200"]
mybatis-plus:mapper-locations: classpath*:com/yourConpany/**/xml/*Mapper.xmlglobal-config:# 关闭MP3.0自带的BANNERbanner: falsedb-config:#主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";id-type: UUID# 默认数据库表下划线命名table-underline: trueconfiguration:#字段值为null也返回字段call-setters-on-nulls: true#configuration:# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
@DS("db1")
@Component
public class QueryData {//在这里写查询sql的代码就可以根据你指定的sql去查询数据库
}

小总结

我觉得核心就是建一个类,然后类的上面标注@DS()这个注解,然后就可以切换数据源了

Java多数据源最通俗讲解相关推荐

  1. hikari如何切换数据源_spring boot+mybatis 多数据源切换(实例讲解)

    由于公司业务划分了多个数据库,开发一个项目会同事调用多个库,经过学习我们采用了注解+aop的方式实现的 1.首先定义一个注解类 @Retention(RetentionPolicy.RUNTIME) ...

  2. 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

    1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...

  3. 蓝牙聊天App设计3:Android Studio制作蓝牙聊天通讯软件(完结,蓝牙连接聊天,结合生活情景进行蓝牙通信的通俗讲解,以及代码功能实现,内容详细,讲解通俗易懂)

    前言:蓝牙聊天App设计全部有三篇文章(一.UI界面设计,二.蓝牙搜索配对连接实现,三.蓝牙连接聊天),这篇文章是:三.蓝牙连接聊天. 课程1:Android Studio小白安装教程,以及第一个An ...

  4. 人工智能算法通俗讲解系列(二):逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们介绍的机器学习算法叫逻辑回归.它英语名称是Logistic Regression,简称LR. 跟之前一样,介绍这个算 ...

  5. java中删除sqlite数据库语句_sqlite数据库的介绍与java操作sqlite的实例讲解

    sqlite数据库的介绍与java操作sqlite的实例讲解 发布时间:2020-10-03 05:40:34 来源:脚本之家 阅读:92 作者:Lee_Tech sqlite是啥? 1.一种轻型数据 ...

  6. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...

  7. 冲突域、广播域的通俗讲解

    冲突域.广播域的通俗讲解 1.冲突域(物理分段)         连接在同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合或以太网上竞争同一带宽的节点集合.这个域代表了冲突在其中发生并 ...

  8. 通俗讲解:图像傅里叶变换

    转自某乎:通俗讲解:图像傅里叶变换 - 知乎 这里我们主要要讲的是二维图像傅里叶变换,但是我们首先来看一张很厉害的一维傅里叶变换动图. 妈耶~厉害哇!它把时域和频域解释的很清楚! 什么!你看不懂! 简 ...

  9. java 代码块的作用_4种Java代码块的作用讲解

    4种Java代码块的作用讲解 时间:2017-06-28     来源:华清远见JAVA学院 今天华清Java学院小编要和大家分享的是Java代码块的作用,代码块是一种常见的代码形式,他用大括号&qu ...

最新文章

  1. Sharding-JDBC教程:Spring Boot整合Sharding-JDBC实现数据分表+读写分离
  2. 基于Android移动终端的微型餐饮管理系统的设计与实现3-技术整合
  3. 转 UIAlertView 不显示、屏幕变灰
  4. HH SaaS电商系统的支付模块设计
  5. ubunt 下 配置samba 服务器
  6. 在JS/jQuery中,怎么触发input的keypress/keydown/keyup事件?
  7. 解决UnicodeEncodeError。python的docker镜像增加locale 中文支持
  8. bagging算法_Bagging与随机森林算法及其变种
  9. SQL判断字段是否为空,为NULL
  10. 解决办法:undefined reference to symbol 'pthread_mutexattr_settype@@GLIBC_2.2.5'
  11. 计算机电路基础 - 1,计算机电路基础1.1.doc
  12. 如何安装旧的nvidia显卡驱动程序
  13. 计算机音乐野狼,野狼disco(hook部分)单轨调教用
  14. 基于Opencv的图像卡通化
  15. java产品经理_产品经理必懂的技术那点事儿:成为全栈产品经理
  16. MCMC原理解析(马尔科夫链蒙特卡洛方法)
  17. 编译原理课程设计-对pl0语言进行扩充
  18. 最好的OCR识别(图片转换文字)工具:ABBYY FineReader
  19. 2020年微信引流,教你如何吸引客源!
  20. 权威机构统计:2021 年最佳数据中心网络公司,中国华为和H3C上榜

热门文章

  1. oracle 与赛门铁克,Oracle与赛门铁克认证Veritas数据中心解决方案
  2. CentOS6 使用 RPM 安装 apache 服务器(一)
  3. 从事手机软件开发需要掌握什么知识
  4. linux基础操作之四
  5. 安防监控流媒体服务器对接宇视摄像机配置OCX插件安装时出现Failed to register ocx, error code 14001错误问题分析
  6. 嵌套交叉验证的一致特征(Consensus features nested cross-validation)
  7. 如何实现产销平衡_如何让产品产销平衡,利润最大化?
  8. php优势和技术应用
  9. GBase 8a MPP Cluster 认证培训资料汇总
  10. 实现对 2:3 或者3:2的图片进行1:1裁剪