`
仁生之狼
  • 浏览: 45004 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

spring+mybatis多数据源的配置

 
阅读更多

解决方案:

多套sqlSessionFactory,针对不同的数据源

数据源

<something-else-entirely>
	<proxool>
		<alias>peccancy</alias>
		<driver-url>jdbc:oracle:thin:@172.16.60.46:1521:orcl</driver-url>
		<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
		<driver-properties>
			<property name="user" value="oses"/>
			<property name="password" value="oses"/>
		</driver-properties>
		...
	</proxool>
	<proxool>
		<alias>yhtepap</alias>
	 	<driver-url>jdbc:oracle:thin:@172.16.60.46:1521:orcl</driver-url>
		<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
		<driver-properties>
			<property name="user" value="pap"/>
			<property name="password" value="pap"/>
		</driver-properties>
		...
	</proxool>
</something-else-entirely>

 1.方法一

<bean id="dataSource_peccancy" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >  
	<property name="driverClassName">  
		<value>org.logicalcobwebs.proxool.ProxoolDriver</value>  
	</property>  
	<property name="url">  
		<value>proxool.peccancy</value>  
	</property>  
</bean>  
<bean id="dataSource_pap" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >  
	<property name="driverClassName">  
		<value>org.logicalcobwebs.proxool.ProxoolDriver</value>  
	</property>  
	<property name="url">  
		<value>proxool.pap</value>  
	</property>  
</bean> 

  

<bean id="sqlSessionFactory_peccancy" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource_peccancy" />
	<property name="mapperLocations">
		<list>
			<value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>
			<value>classpath*:net/yhte/web/peccancy/**/mapper/*Mapper.xml</value>
		</list>
	</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="net.yhte.web.peccancy.**.dao" />
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_peccancy"></property>
</bean>
<bean id="sqlSessionFactory_pap" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource_pap" />
	<property name="mapperLocations">
		<list>
			<value>classpath*:net/yhte/web/pap/**/mapper/*Mapper.xml</value>
			<value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>
		</list>
	</property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="net.yhte.web.pap.**.dao" />
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_pap"></property>
</bean>

 本方案需要根据数据源的不同对*Mapper.xml进行分包处理,便于配置,同一个包下的*Mapper.xml如果对应的数据源不同,则不方便使用通配符进行统一扫描配置,且sqlSessionFactory扫包的basePackage 也需要分包

2.使用自定义注解来取代spring的repository设置到annotationClass中。这样每个mapper文件中注入相应的注解@PapRepository,@PeccancyRepository

<property name="annotationClass" value="org.springframework.stereotype.Repository"></property>

 改成<property name="annotationClass" value="net.xxx.PapRepository"></property>

  配置文件如下:

<bean id="sqlSessionFactory_peccancy" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource_peccancy" />
		<property name="mapperLocations">
			<list>
				<value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>
				<value>classpath*:net/yhte/web/**/mapper/*Mapper.xml</value>
			</list>
		</property>
	</bean>
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="annotationClass" value="net.yhte.common.service.PeccancyRepository"></property>
		<property name="basePackage" value="net.yhte.web.**.dao" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_peccancy"></property>
	</bean>
	<bean id="sqlSessionFactory_pap" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource_pap" />
		<property name="mapperLocations">
			<list>
				<value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>
				<value>classpath*:net/yhte/web/**/mapper/*Mapper.xml</value>
			</list>
		</property>
	</bean>
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="annotationClass" value="net.yhte.common.service.PapRepository"></property>
		<property name="basePackage" value="net.yhte.web.**.dao" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_pap"></property>
	</bean>

 如上所配置使用pap的mapper文件就加上注解@PapRepository

public @interface PeccancyRepository {

}

public @interface PapRepository {

}

 

 

// 使用dataSource_pap 数据源  
@PapRepository
public interface UserMapper {
	List<User> find(UserQueryBean userQueryBean);
}
// 使用dataSource_peccancy 数据源  
@PeccancyRepository
public interface ParameterMapper{

    List<Parameter> find(ParameterQueryBean queryBean);
}

 

分享到:
评论

相关推荐

    Spring+Mybatis 多数据源配置

    当我们面临多数据源的配置需求时,即在一个应用程序中需要同时操作多个数据库,Spring和Mybatis的集成就显得尤为重要。这篇博客“Spring+Mybatis 多数据源配置”将深入探讨如何在项目中实现这一功能。 首先,我们...

    Spring+MyBatis多数据源配置实现

    总之,Spring+MyBatis多数据源配置是大型项目中常见的需求,它通过`AbstractRoutingDataSource`实现了动态数据源选择,结合MyBatis的Mapper接口和注解,可以方便地在多个数据库之间切换,从而满足复杂的数据库访问...

    SSM(Spring+SpringMVC+MyBatis)多数据源配置框架

    在多数据源配置中,Spring能够帮助管理不同的数据源,通过配置bean来切换和控制数据源的使用。 **SpringMVC** 是Spring框架的一部分,专为Web开发设计。它简化了模型-视图-控制器(Model-View-Controller,MVC)的...

    Springboot+Mybatis+Druid多数据源配置

    在多数据源场景下,我们可以通过Spring Boot的@ConfigurationProperties特性来配置不同的数据源。每个数据源都需要定义一套包括URL、用户名、密码和驱动类名等属性。例如: ```java @Configuration @...

    Springboot+mybatis+druid多数据源配置(oracle+mybatis)

    总结,Spring Boot结合Mybatis和Druid实现多数据源配置的过程包括:配置数据源、配置Mybatis、创建数据源切换器、以及针对不同数据库的测试。这一过程涉及了Spring Boot的自动配置、依赖注入、配置属性绑定等多个...

    springmvc + spring + mybatis + maven整合配置文件

    然后配置Spring的applicationContext.xml,包括Bean定义、AOP配置、数据源、事务管理器等。接着配置Spring MVC的servlet-context.xml,设置DispatcherServlet、视图解析器、拦截器等。最后,配置MyBatis的mybatis-...

    SpringMvc+Spring+Mybatis+Maven+注解方式=整合

    - MyBatis的配置文件(mybatis-config.xml)中,设置数据源和SqlSessionFactory,以便MyBatis与数据库交互。 通过以上步骤,我们可以构建一个松耦合、可测试的系统,每个组件都发挥着它应有的作用,而注解方式的...

    《spring+mybatis 企业应用实战》源码、类库全资料

    1. **配置文件**:包括Spring的bean配置文件(如`applicationContext.xml`)和MyBatis的配置文件(如`mybatis-config.xml`),它们定义了数据源、事务管理器、SqlSessionFactory以及Mapper接口的扫描路径。...

    struts2+spring+mybatis框架

    3. **配置MyBatis**:编写MyBatis的配置文件,包括数据源、SqlSessionFactory,并为每个Mapper接口定义XML映射文件。 4. **整合Spring和Struts2**:使用Spring的Struts2插件,使Spring管理的Bean可以直接在Struts2 ...

    Spring+SpringMVC+Mybatis多数据源

    总结来说,"Spring+SpringMVC+Mybatis多数据源"的整合涉及了Spring的数据源管理、SpringMVC的请求路由、Mybatis的数据源配置以及事务管理。具体实现时,可以根据项目需求选择合适的方式进行数据源切换,以达到优化...

    spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目

    在多数据源环境中,MyBatis的配置文件需要包含多个数据源的信息,每次操作数据库时,可以通过SqlSessionFactoryBuilder创建指定数据源的SqlSessionFactory,然后通过SqlSession来执行SQL。 项目的...

    springboot+druid+mybatis多数据源动态切换案例

    5. **MyBatis配置**:在多数据源环境下,MyBatis的配置需要针对每个数据源分别设置SqlSessionFactory,并在Mapper接口上通过@MapperScan注解指定对应的SqlSessionFactory。 6. **事务管理**:在多数据源情况下,...

    springboot+mybatis双数据源配置及事务处理

    Spring Boot通过`@EnableAutoConfiguration`注解自动配置了大量常见服务,包括数据源和MyBatis的配置。然而,当涉及到多个数据源时,我们需要手动进行一些配置。 1. **配置双数据源** - 首先,为每个数据源创建一...

    spring+spring mvc+mybatis框架整合实现超市货物管理系统

    对于MyBatis,我们需要创建`mybatis-config.xml`配置文件,配置数据源、事务管理器以及映射文件的位置。 数据库方面,本系统使用了MySQL,通过MyBatis的SqlSessionFactory和SqlSession对象,我们可以执行SQL语句。`...

    SpringBoot+gradle+mybatis多数据源动态配置

    本项目结合了SpringBoot、Gradle和MyBatis,旨在实现多数据源的动态配置,这对于处理多个数据库或者分库分表的场景尤其有用。以下是对这个项目的详细解析: **SpringBoot** SpringBoot是由Pivotal团队提供的全新...

    struts+spring+mybatis源代码例子

    标题中的"struts+spring+mybatis源代码例子"意味着这是一个实际的项目示例,包含了这三个框架的集成使用,可以帮助开发者理解和学习如何在实际项目中整合这些技术。通过分析和研究这个源代码,开发者可以深入理解...

    spring+springmvc+mybatis

    在实际项目中,开发者通常会创建一个配置文件(如:`springmvc_mybatis1208`可能包含的`spring-config.xml`),在其中配置Spring和MyBatis的相关设置,包括数据源、事务管理器、SqlSessionFactory等。同时,还需要...

    SpringMVC+Spring+MyBatis jar包和配置文件

    4. 配置MyBatis:编写mybatis-config.xml,包含数据源、事务管理器、环境等信息。 5. 配置Mapper:创建Mapper接口和对应的XML文件,定义SQL语句。 6. 配置Spring与MyBatis的集成:使用MyBatis-Spring的...

    SSM框架-详细整合教程(Spring+SpringMVC+MyBatis).pdf

    - `spring-mybatis.xml`中配置数据源、事务管理器、MyBatis的SqlSessionFactory以及Mapper扫描器。 - `spring-mvc.xml`中配置DispatcherServlet、视图解析器、拦截器等。 6. **资源文件** - 配置数据库连接的`...

Global site tag (gtag.js) - Google Analytics