用到一个项目,需要整合2个不同的数据库!
现将代码贴下,以备后用:
1、创建静态映射类,该类映射动态数据源
public class DataSourceMap { public static final String Analyse="Analyse"; public static final String DLmarket= "DLmarket"; }
2、创建数据库连接配置容器 类
public class DataSourceContextHolder { private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); public static void setCustomerType(String customerType){ contextHolder.set(customerType); } public static String getCustomerType() { return contextHolder.get(); } public static void clearCustomerType() { contextHolder.remove(); } }
3、创建动态数据源切换类
public class DynamicDataSource extends AbstractRoutingDataSource{ @Override protected Object determineCurrentLookupKey() { // TODO Auto-generated method stub String customerType=""; if(DataSourceContextHolder.getCustomerType()!=null){ customerType = DataSourceContextHolder.getCustomerType().toString(); } return customerType; } }
该类继承AbstractRoutingDataSource,并重写determineCurrentLookupKey方法
4、在spring中配置多数据源
<bean id="analyseDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_username}" /> <property name="password" value="${jdbc_password}" /> xxx... </bean> <bean id="dlmarketDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url_dlmarket}" /> <property name="username" value="${jdbc_username_dlmarket}" /> <property name="password" value="${jdbc_password_dlmarket}" /> xxx... <bean> <!-- 多数据源的映射关系 --> <bean id="dataSource" class="com.current.util.DynamicDataSource"> <property name="targetDataSources"> <map key-type="java.lang.String"> <!-- key的值必须要和静态键值对照类中的值相同 --> <entry value-ref="analyseDataSource" key="Analyse"></entry> <entry value-ref="dlmarketDataSource" key="DLmarket"></entry> </map> </property> <property name="defaultTargetDataSource" ref="analyseDataSource"></property> </bean>
其他的SessionFactory 事务管理器配置都不需要修改。
5、在Action中切换数据源
public void getList(){ DataSourceContextHolder.setCustomerType(DataSourceMap.DLmarket); int id=1; List<Chaining> chainList = chainService.getList(id); System.out.println(chainList.get(0).getChaining()); }
相关推荐
SSH配置多个数据源 SSH配置多个数据源 SSH配置多个数据源 配置说明文档
详细说明了在SSH框架中进行多数据源配置的各种方法
关于ssh框架有关数据源的配置的详细资料哦,不下别后悔啊!
2.配置数据源 开始->控制面版->性能和维护(如果是在经典视图下则不用此步)->管理工具->数据源 (ODBC)->系统 DSN->添加->(现在可以 看到,在此可以连接很多数据库)选择最后一个->完成->名称(随便) 描述(随便) 服务器...
该配置文件连接的是两个数据库结构相同的数据源,其他比如数据库结构不原理也可行。本人在遇到此问题时上网搜了很多答案结果都不怎么如意,有的太深奥不过思想很好,有的又太不给力,后来自己慢慢研究配置成功后想与...
Struts数据源驱动, ssha配置缺少架包
--读取properties资源文件配置,如deploy.properties--> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <value>classpath:/deploy.properties <!--...
Hibernate配置各种数据源 <!– 各属性的配置–> <!—为true表示将Hibernate发送给数据库的sql显示出来 –> ”show_sql”>true <!– SQL方言,这边设定的是MySQL –> ”dialect”>...
1、 配置数据源 2、 配置会话工厂(依赖注入上面的数据源,还要注入hbm映射文件[注意正确的位置]、hibernate属性文件) 3、 配置事务管理器(依赖注入上面的会话工厂) 4、 Spring中声明事务管理器(根据需要又可...
SSH1框架搭建实例 .
dbcp数据源配置JAR包
集成好的struts2(2.18)+hibernate3.3+spring2.5代码模板,含有简单person表的操作,数据源,二级缓存等都已经配置好,稍微做修改可以用于学习或做项目
首先,这个方案完全是在spring的框架下解决的,数据源依然配置在spring的配置文件中,sessionFactory依然去配置它的dataSource属性,它甚至都不知道dataSource的改变。 其次,实现简单,易于维护。这个方案虽然我说...
使用struts2+spring+hiernate开发的小项目,供想自己搭建环境的兄弟们借鉴,使用了拦截器、过滤器做权限验证和字符...以及spring配置hibernate数据源。数据库方面大家根据hibernate文件和数据源配置自己建立。 sb csdn
这是我自己在学习ssh时用的小例子,里面对ssh的使用还是蛮到位的,配置数据源,依赖注入等都可以看到,对于正在学习ssh的的新手可以看看。