`
单一色调
  • 浏览: 85567 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SSH配置动态数据源

阅读更多

用到一个项目,需要整合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的值必须要和静态键值对照类中的值相同&nbsp; -->
		<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框架中的每个组件的角色。Struts2是MVC(Model-View-Controller)架构的一部分,负责处理用户请求和展现视图;Spring作为容器,管理...

    SSH动态切换数据源

    SSH动态切换数据源是一种在Java Web开发中处理多数据库连接切换的技术,主要应用于Spring、Struts和Hibernate(SSH)这三大框架集成的项目。SSH框架是企业级应用开发的常用组合,提供了强大的业务逻辑处理和数据持久...

    ssh框架有关数据源的配置

    关于ssh框架有关数据源的配置的详细资料哦,不下别后悔啊!

    SSH源框架SSH源框架SSH源框架SSH源框架SSH源框架

    4. 如何整合这三个框架,配置相应的拦截器、数据源、事务管理等。 5. 错误处理和异常处理机制,以及日志记录。 6. 测试策略,包括单元测试和集成测试。 在压缩包文件"ssh"中,可能包含了SSH框架的相关源代码、配置...

    SSH配置过程,介绍SSH的详细配置过程

    根据提供的文件信息,可以看出这里似乎存在一定的混淆,因为文件标题和描述强调的是SSH配置过程,但实际内容却涉及到了Struts2、Spring以及Hibernate等Java Web框架和技术的配置。为了符合您的需求,我将集中讨论SSH...

    Ssh多数据源.doc

    此外,对于SSH框架中的Hibernate,可以通过在SessionFactory配置中使用`org.springframework.jdbc.datasource.DataSourceTransactionManager`作为事务管理器,从而实现与Spring动态数据源的集成。 总结起来,SSH多...

    ssh配置多个数据库

    1. 动态配置多数据源 我们可以使用一个类来表示多个数据源,例如: ```java public class DataSourceConst { public static final String Admin = "admin"; public static final String User = "user"; } ``` 2...

    ssh双数据源登录.rar

    在"ssh双数据源登录.rar"这个压缩包中,可能包含的文件有配置文件(如spring配置文件、hibernate配置文件)、Java源代码(如Service、DAO层的实现)以及相关的测试用例。通过这些文件,开发者可以学习如何在实际项目...

    ssh双数据源登录实例

    在这个“ssh双数据源登录实例”中,我们将探讨如何在同一个项目中配置并使用两个不同的数据库数据源,这对于多租户或多模块系统来说非常常见。 首先,我们需要理解SSH框架各自的职责: 1. Spring:作为核心容器,...

    SSH配置详细步骤及异常处理

    3. 配置数据源:如果项目需要数据库操作,需配置数据源并声明事务管理器。 4. 集成Struts2:通过Struts2-Spring插件,将Spring的IoC容器引入到Struts中。 Hibernate是持久层的解决方案,用于操作数据库。配置...

    Struts数据源驱动,ssha配置缺少架包

    总之,"Struts数据源驱动,ssha配置缺少架包"的问题,需要从检查项目依赖、配置数据源、整合Struts、Spring和Hibernate等多个角度进行排查和解决。确保所有必需的库都已添加,并正确配置了相关的数据源和框架集成。...

    Ssh配置步骤

    `&lt;data-sources&gt;`标签用于配置数据源,但在给出的部分中没有具体的数据源配置。 SSH配置涉及的知识点还包括:MVC设计模式的理解、Spring的AOP和DI、Struts的请求处理流程、Hibernate的ORM映射、数据库连接池配置、...

    JavaEE SSH 配置文件集

    以下是关于SSH配置文件的详细解释: 1. **Spring框架**: - **spring-config.xml**:这是Spring的核心配置文件,用于定义Bean的实例化、依赖注入以及AOP(面向切面编程)等相关配置。例如,你可以在这里声明数据库...

    SSH配置文件

    本资源包含的SSH配置文件,是针对数据库连接的配置,分别针对Oracle和MySQL两种常见的关系型数据库。 首先,我们来看`配置文件(oracle)`。Oracle配置文件通常涉及到Spring的JDBC模板或者Hibernate的SessionFactory...

    ssh配置文件例子

    例如,你可以声明数据源、事务管理器、业务层和服务层的bean,以及DAO(数据访问对象)等。此外,Spring还支持通过配置文件导入其他XML配置,实现模块化配置。 其次,`hibernate.cfg.xml`是Hibernate框架的配置文件...

    H3C_SSH2.0配置

    配置SSH客户端的任务包括指定源IP地址、设置认证方式等。 ##### 1.3.2 为SSH客户端指定源IP地址或源接口 指定客户端连接服务器时使用的源IP地址或源接口,这对于网络策略的实施非常重要。 ##### 1.3.3 配置SSH...

    针对SSH框架Spring管理Hibernate连接多个数据源配置文件

    该配置文件连接的是两个数据库结构相同的数据源,其他比如数据库结构不原理也可行。本人在遇到此问题时上网搜了很多答案结果都不怎么如意,有的太深奥不过思想很好,有的又太不给力,后来自己慢慢研究配置成功后想与...

    SSH框架与SSI框架的区别-配置说明

    SSH 框架使用 Spring 框架的配置文件格式,定义了数据源 Bean 和事务管理配置,而 SSI 框架使用 Server-Side Include 技术,定义了模板配置和数据源配置。 在实际应用中,选择哪种框架取决于项目的需求和复杂度。...

Global site tag (gtag.js) - Google Analytics