resin文件配置(我用的resin,其他的可自行配置)
<database><jndi-name>jdbc/OracleDB</jndi-name><driver type="oracle.jdbc.driver.OracleDriver"><!--<url>jdbc:oracle:thin:@oa.paipai580.com:1521:orcl</url><user>cggl</user><password>cggl345#$%</password>--><url>jdbc:oracle:thin:@192.168.1.9:1521:orcl</url><user>ycg</user><password>ycg</password></driver><prepared-statement-cache-size>8</prepared-statement-cache-size><max-connections>20</max-connections><max-idle-time>30s</max-idle-time></database><database><jndi-name>jdbc/mysqlDB</jndi-name><driver type="com.mysql.jdbc.Driver"><url>jdbc:mysql://39.98.47.52:3306/dev-idr</url><user>admin</user><password>mySteel2019,!@#</password></driver><prepared-statement-cache-size>8</prepared-statement-cache-size><max-connections>20</max-connections><max-idle-time>30s</max-idle-time></database>

1.  然后写一个数据源持有类:

package org.thcic.ejw.components.datatable;public class DataSourceHolder {private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();/*** @Description: 设置数据源类型* @param dataSourceType  数据库类型* @return void* @throws*/public static void setDataSourceType(String dataSourceType) {contextHolder.set(dataSourceType);}/*** @Description: 获取数据源类型* @return String* @throws*/public static String getDataSourceType() {return contextHolder.get();}/*** @Description: 清除数据源类型* @return void* @throws*/public static void clearDataSourceType() {contextHolder.remove();}}

  2. 写一个数据源路由类

package org.thcic.ejw.components.datatable;import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class RoutingDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {return DataSourceHolder.getDataSourceType();}}

  

3. 配置数据源路由

<!--配置数据源路由--><bean id="dataSource" class="org.thcic.ejw.components.datatable.RoutingDataSource"><!-- 为targetDataSources注入两个数据源 --><property name="targetDataSources"><map key-type="java.lang.String"><entry key="orcleDb" value-ref="orclDataSource"/><entry key="mysqlDb" value-ref="mysqlDataSource"/></map></property><!-- 为指定数据源RoutingDataSource注入默认的数据源--><property name="defaultTargetDataSource" ref="orclDataSource"/></bean>

4. spring整合

<!--hibernate start--><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">${dataSource.hibernate.dialect}</prop><prop key="hibernate.connection.useUnicode">true</prop><prop key="hibernate.connection.characterEncoding">utf-8</prop><prop key="hibernate.show_sql">${dataSource.hibernate.show_sql}</prop><prop key="hibernate.jdbc.fetch_size">50</prop></props></property><property name="packagesToScan">  <list>  <value>org.thcic.ejw.sys.vo</value>  <value>org.thcic.ejw.purchase.setting.vo</value>  <value>org.thcic.ejw.purchase.inquiry.vo</value><value>org.thcic.ejw.purchase.notice.vo</value>  <value>org.thcic.ejw.purchase.bid.vo</value><value>org.thcic.ejw.purchase.report.vo</value>  </list> </property></bean>

  

5.双jdbcTemplate配置

<!--jdbcTemplate start--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" abstract="false"lazy-init="false" autowire="default" ><property name="dataSource" ref="dataSource"></property></bean><bean id="mysqlJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" abstract="false"lazy-init="false" autowire="default" ><property name="dataSource" ref="mysqlDataSource"></property></bean>

  

6.使用数据源

/*jdbcTemplate的使用*/
@Autowired@Qualifier("oracleJdbcTemplate")private JdbcTemplate dbTwojdbcTemplate;@Autowired@Qualifier("mysqlJdbcTemplate")private JdbcTemplate dbOneJdbcTemplate;/*数据源切换*/
//获取数据源类型
DataSourceHolder.getDataSourceType();
//设置为 db1 的数据源
DataSourceHolder.setDataSourceType("db1");
//设置为 db2 的数据源
DataSourceHolder.setDataSourceType("db2");

  

转载于:https://www.cnblogs.com/HHR-SUN/p/11187408.html

双数据源配置(一个项目中链接两个数据库)相关推荐

  1. 一个项目中能提出哪些数据库优化_如何有效进行项目集管理?

    随着企业的扩张,业务往来日益增多,企业同时开展多个项目是不可避免的,如何有效进行多项目管理,是许多企业急需解决的问题. 这一趋势导致多项目管理角色的兴起.它与项目高效和谐地配合,为企业的快速发展提供了 ...

  2. 一个项目中能提出哪些数据库优化_阿里资深技术专家曲山:优秀的数据库存储引擎应具备哪些能力?...

    云栖君导读:作为数据库的底盘,一个成熟的存储引擎如何实现高效数据存取?本文作者是阿里巴巴OLTP数据库团队资深技术专家--曲山.作为自研高性能.低成本存储引擎X-Engine的负责人,曲山眼中的优秀关 ...

  3. log4jdbc oracle,通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql

    通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql 通过weblogic配置log4jdbc数据源,在项目中使用该数据源,输出sql 说一下配置: 服务器weblogic ...

  4. 一个项目中不能同时出现两个main函数

    在写两个短程序的时候想着把两个cpp文件放到同一个项目中比较省空间,然后就出现了下面的问题:main函数已经定义过,然后将项目中的一个含有main函数的cpp文件删除之后再运行,可以运行 原因大概是m ...

  5. Centos6.5 双网卡配置一个上外网一个接局域网

    Centos6.5 双网卡配置一个上外网一个接局域网 1.配置DNS 修改对应网卡的DNS的配置文件 # vi /etc/resolv.conf  修改以下内容,可以设置多个: nameserver ...

  6. python两两组合_python – 一个列表中的两个组合列表

    我是一个Python初学者.我想从一个列表中获取两个组合列表. 例如,我有一个列表: c = [1, 2, 3, 4] 我想使用每四个项目来获得每个可能的组合来填充两个列表.将会有((2 ^ 4)/ ...

  7. 当一个项目中同时存在webroot和webcontext时

    当一个项目中同时存在webroot和webcontext时,注意一定要删除那些没在使用的.还有要发布其中一个想要的目录到服务器中,具体方法是  选择相应工程-----properties-----de ...

  8. C语言:一个数组中只有两个数字是出现一次

    1 //1.一个数组中只有两个数字是出现一次, 2 //其他所有数字都出现了两次. 3 //找出这两个数字,编程实现.a 4 5 //^=单独两个数的^结果 6 //单独出现的两个数不同位的标记 7 ...

  9. eclipse中将一个项目作为library导入另一个项目中

    1. github上搜索viewpagerIndicator: https://github.com/JakeWharton/ViewPagerIndicator 2. 下载zip包,解压,eclip ...

最新文章

  1. pandas pivot_table透视表、crosstab交叉表、aggfunc函数详解及实战
  2. 神经网络debug太难了,这里有六个实用技巧
  3. 深度学习核心技术精讲100篇(四十)-微信“看一看“内容理解与推荐,背后深层次的技术知多少?
  4. 2021校招 | 交通银行-IT类编程题
  5. OpenCV:OpenCV图像旋转的代码
  6. 《Android源码设计模式》--装饰模式
  7. lisp提取长方形坐标_语义SLAM | 深度学习用于特征提取 : SuperPoint(一)
  8. 使用innotop监测mysql
  9. H3C WA2220E-AG 设置本地MAC+PSK认证:mac-and-psk
  10. linux开机进入不了系统安装软件,揭秘linux系统启动流程,面试官问起来再也不怕了...
  11. python制作恶搞_Pycharm制作搞怪弹窗的实现代码
  12. C4 model技术架构图--context图
  13. 一口气读完系列最穷的穷光蛋
  14. 电脑ndows无法启动,电脑无法启动windows帮助和支持为什么?
  15. java中lastmodified_Java File lastModified()用法及代码示例
  16. win2003 apache php mysql,浅析Win2003系统中配置Apache+php+mysql的方法
  17. 浅析 HTML console
  18. 微信公众号和微信小程序进程名获取及配置
  19. 【报错】ImportError: libpng16-57e5e0a0.so.16.37.0: cannot open shared object file: No such file or direc
  20. Test OpenStack SRIOV (by quqi99)

热门文章

  1. 在 Mac 上创建和移除替身
  2. cocos2d 解密ccbi_怎么让cocosbuilder制作的动画(cocos2d-x的ccbi动画)播放完删除自己?...
  3. STM32F407+CubeMX-使用TIM计算编码器的脉冲总数,并计算脉冲方向
  4. 浏览器怎么清理缓存_Mac系统浏览器缓存清理工具
  5. Linux笔记-centos7替换yum及编译安装mydumper
  6. Qt学习笔记-简单的TCP程序
  7. android 清屏函数,浅谈android截屏问题
  8. docker php nginx,docker 构建nginx + php
  9. python二级考试程序题批改_随机生成百以内加减乘除题目并批改
  10. linux 删除提示没有那个文件或目录,rm 无法删除没有那个文件或目录