- 浏览: 265155 次
- 性别:
- 来自: 江西
文章分类
最新评论
-
hiben:
[list][*][list][*][*][*][/list] ...
多数据源的配置和切换 -
bqmcjl:
大哥。我项目里边怎么没有AbstractRoutingData ...
多数据源的配置和切换 -
zhouchuang:
y
java中的分页处理 -
hm2008:
...
父母不会站在原地等你 (推荐) -
tamsiuloong:
简单是简单 效率相当低
最简单的java 克隆实现
[color=green]
项目中用到过多数据源之间的切换,从网络上搜寻到的相关资料结合自己的实践,把它记录下来,以备需要时查询。
一、数据源的配置。
代码:
数据源枚举类:
代码:
动态数据源:
代码:
数据源切换类:
代码:
当需要数据库操作时,需要在操作前增加这段代码即可:
[/color]
[/list] [/list]
事务最好用全局事务,用全局事务才能保证,具体我也没有去试过。呵呵。
项目中用到过多数据源之间的切换,从网络上搜寻到的相关资料结合自己的实践,把它记录下来,以备需要时查询。
一、数据源的配置。
代码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <!-- 数据源定义--> <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/tenpay_db?user=tenpay&password=cft2008</value> </property> <property name="username"> <value>tenpay</value> </property> <property name="password"> <value>cft2008</value> </property> </bean> <bean id="fcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/c2c_db?user=tenpay&password=cft2008</value> </property> <property name="username"> <value>tenpay</value> </property> <property name="password"> <value>cft2008</value> </property> </bean> <bean id="dataSource" class="com.ben.util.DynamicDataSource"> <property name="targetDataSources"> <map key-type="com.ben.util.CustomerType"> <entry key="fcds" value-ref="fcDataSource"/> <entry key="myds" value-ref="myDataSource"/> </map> </property> <property name="defaultTargetDataSource" ref="fcDataSource"/> </bean> </beans>
数据源枚举类:
代码:
/** * <pre> * Title: CustomerType.java * Project: tenpay_Admin * Type: com.ben.util.CustomerType * Author: ben.liu * Create: 2008-11-25 下午05:12:49 * Copyright: Copyright (c) 2008 * Company: * <pre> */ package com.ben.util; /** * <pre> * 数据源枚举类 * </pre> * @author ben.liu * @version 1.0, 2008-11-25 */ public enum CustomerType { fcds, myds }
动态数据源:
代码:
/** * <pre> * Title: DynamicDataSource.java * Project: tenpay_Admin * Type: com.ben.util.DynamicDataSource * Author: ben.liu * Create: 2008-11-25 下午02:26:46 * Copyright: Copyright (c) 2008 * Company: * <pre> */ package com.ben.util; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; /** * <pre> * 动态数据源 * </pre> * @author ben.liu * @version 1.0, 2008-11-25 */ public class DynamicDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return CustomerContextHolder.getCustomerType(); } }
数据源切换类:
代码:
/** * <pre> * Title: CustomerContextHolder.java * Project: tenpay_Admin * Type: com.ben.util.CustomerContextHolder * Author: ben.liu * Create: 2008-11-25 下午02:22:52 * Copyright: Copyright (c) 2008 * Company: * <pre> */ package com.ben.util; /** * <pre> * 数据源切换类 * </pre> * @author ben.liu * @version 1.0, 2008-11-25 */ public class CustomerContextHolder { private static final ThreadLocal<CustomerType> contextHolder = new ThreadLocal<CustomerType>(); public static void setCustomerType(CustomerType customerType) { contextHolder.set(customerType); } public static CustomerType getCustomerType() { return (CustomerType) contextHolder.get(); } public static void clearCustomerType() { contextHolder.remove(); } }
当需要数据库操作时,需要在操作前增加这段代码即可:
CustomerContextHolder.setCustomerType(CustomerType.myds);
[/color]
评论
7 楼
hiben
2016-10-09
- [list]
- [*][list]
- [*][*]
- [*]
6 楼
bqmcjl
2013-06-18
大哥。我项目里边怎么没有AbstractRoutingDataSource这个包啊,导入说找不到这个包怎么解决啊
5 楼
benlsoft
2009-09-10
crabboy 写道
事务怎么控制?
事务最好用全局事务,用全局事务才能保证,具体我也没有去试过。呵呵。
4 楼
crabboy
2009-07-27
事务怎么控制?
3 楼
benlsoft
2009-02-25
已经写得很清楚了,只要按这几步就可以切换不同数据源。
1.数据源要几个就配置几个,配置好了。
2.在枚举类中加下配置好的数据源键值。
3.在数据库操作时要用到某个数据源时,只需添加一句:CustomerContextHolder.setCustomerType(CustomerType.xxxx),即可(xxx代表你要切换的数据源键名)。
1.数据源要几个就配置几个,配置好了。
2.在枚举类中加下配置好的数据源键值。
3.在数据库操作时要用到某个数据源时,只需添加一句:CustomerContextHolder.setCustomerType(CustomerType.xxxx),即可(xxx代表你要切换的数据源键名)。
2 楼
心素闲
2009-02-06
我的没切换成功。
1 楼
心素闲
2009-02-06
能说得再详细些么?最近刚好要用到多数据源。
发表评论
-
spring quartz 任务调度
2011-07-07 15:29 1052最简单的配置如下:默认是一分钟执行一次 <bean i ... -
spring、hibernate等开源框架svn源码地址
2011-02-10 08:58 4000很多优秀的开源项目已经提供SVN源码签出,下面是各源码的svn ... -
eclipse启动错误:JVM terminated. Exit code=-1
2009-12-02 10:08 2143在eclipse.ini文件的开始增加下列vm的设置。下面是我 ... -
weblogic8.1的ejb服务问题
2009-09-27 10:11 1281在宁夏电信的开发中,发现在调用weblogic8.1的ejb服 ... -
3des的加解密过程
2009-09-03 22:10 2299请看代码,这是3Des最简单的加解密过程: /** * ... -
js checkbox 全选 全不选 代码
2008-12-17 14:32 2381/* *obj 当前对象(this) *cName 子选项名称 ... -
最简单的java 克隆实现
2008-09-25 17:23 5142先定义一个标准的javabean对象,并实现持久化接口 请看代 ... -
java 代理机制实现
2008-09-25 15:56 2246Proxy 模式 代理的主要类:java.lang.re ... -
js 级联下拉框的生成
2008-09-17 17:57 3787最近做页面时,碰到js级联下拉框显示的问题。先用下拉框选择大类 ... -
ant脚本(部署应用)
2008-09-04 18:27 2616最近在部署应用时,遇到一个问题,就是ant脚本登录到linux ... -
struts+spring+sitemesh下的中文乱码问题
2008-04-14 17:25 2671最近有个项目用struts+spring+sitemesh做的 ... -
spring jdbcTemplate 操作接口使用
2008-04-10 22:56 3371import java.sql.CallableState ... -
spring jdbcTemplate 实现批量更新操作接口使用
2008-04-10 22:52 16541批量更新操作使用如下代码: public int[] up ... -
struts下的分页实现
2008-04-10 13:24 1508ActionForm 基类 BaseForm的代码如下: ... -
java中的正则表达式
2007-10-29 11:00 1937如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一 ... -
spring AOP
2007-08-09 16:39 1558这是在网上发现的一篇关于Spring AOP编程的教程,读完这 ... -
Tomcat内存设置从windows服务启动不生效?
2007-08-09 16:24 8632... -
java中用URLConnection 类post方式提交表单
2007-07-02 09:43 29693/** * <pre> * Title: ... -
转贴hibernate2.1与hibernate3.0的区别
2007-03-09 16:03 4382尽管Hibernate 3.0 与Hibernate2.1的源 ... -
各种数据库的jdbc驱动下载及连接方式
2007-03-07 16:46 34903各种数据库驱动 ...
相关推荐
通过简单的demo实现SpingBoot多数据源配置并动态切换多数据源
SpringBoot+dynamic-datasource实现多数据源(msyql、sqlserver)手动切换示例代码 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135701561
基于注解的Spring多数据源配置和使用 前一段时间研究了一下spring多数据源的配置和使用,为了后期从多个数据源拉取数据定时进行数据分析和报表统计做准备。由于之前做过的项目都是单数据源的,没有遇到这种场景,...
基于spring boot mybatis的多数据源配置,使用Druid配置连接池,使用注解自动切换数据源,完美运行!
通过使用sharding-jdbc分库分表,以及多数据源的切换
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
SpringBoot+gradle+mybatis多数据源动态配置 AOP的方式实现数据源动态切换。
通过SpringAop实现多数据源的动态切换 并采用Druid连接池,可扩展继续增加数据库配置。
用于详细描述配置spring下多数据源动态切换方案的实施配置说明。可以自动切换数据源的配置。
本篇文章主要介绍了Spring配置多个数据源并实现动态切换示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
springboot多数据源切换mysql+sql server,该事例代码demo,下载下来就能使用,使用工具idea,自行安装mysql和sql server
用springboot 集成mybatis多数据源,用aop实现的动态切换,支持事务,不会使aop动态切换失效。注意:此代码不涉及分布式事务,如果需要分布式事务 需要采取其他方案。
mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试
通过注解实现数据源的灵活切换
SpringBoot+Atomikos分布式事务及多数据源动态切换,两种demo,两条数据源,是满足事务唯一性的,看清楚是demo
Springcloud 多数库 多数据源整合,查询动态切换数据库
1.配置数据源,2.动态数据源切换,3.注册动态数据源,4.动态数据源注解切点,5.通过切点切换数据源,6.在service层通过注解切换不同数据源,7.启动项目
相信很多朋友在开发的时候,可能会碰到需要一个项目,配置多个数据源的需求,可能是同一种数据库,也可能是不同种类的数据库,这种情况,我们就需要配置多数据源对程序的支持了。 本项目就是一个多数据源的配置,...
请自行修改com/resources/datasource.properties中数据库配置,Demo中配置的两个数据源,一个是Mysql,一个是Oracle。 运行之前请自行建立数据库的表。
SpringBoot操作多数据源(JPA+JdbcTemplate)使用HikariCP数据源进行示例。