文档章节

spring+mybatis多数据源的配置

w
 wangxiao870709
发布于 2016/04/24 11:06
字数 564
阅读 157
收藏 0

解决方案:

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

数据源

Xml代码  收藏代码

  1. <something-else-entirely>  

  2.     <proxool>  

  3.         <alias>peccancy</alias>  

  4.         <driver-url>jdbc:oracle:thin:@172.16.60.46:1521:orcl</driver-url>  

  5.         <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>  

  6.         <driver-properties>  

  7.             <property name="user" value="oses"/>  

  8.             <property name="password" value="oses"/>  

  9.         </driver-properties>  

  10.         ...  

  11.     </proxool>  

  12.     <proxool>  

  13.         <alias>yhtepap</alias>  

  14.         <driver-url>jdbc:oracle:thin:@172.16.60.46:1521:orcl</driver-url>  

  15.         <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>  

  16.         <driver-properties>  

  17.             <property name="user" value="pap"/>  

  18.             <property name="password" value="pap"/>  

  19.         </driver-properties>  

  20.         ...  

  21.     </proxool>  

  22. </something-else-entirely>  

 1.方法一

Xml代码  收藏代码

  1. <bean id="dataSource_peccancy" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >    

  2.     <property name="driverClassName">    

  3.         <value>org.logicalcobwebs.proxool.ProxoolDriver</value>    

  4.     </property>    

  5.     <property name="url">    

  6.         <value>proxool.peccancy</value>    

  7.     </property>    

  8. </bean>    

  9. <bean id="dataSource_pap" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >    

  10.     <property name="driverClassName">    

  11.         <value>org.logicalcobwebs.proxool.ProxoolDriver</value>    

  12.     </property>    

  13.     <property name="url">    

  14.         <value>proxool.pap</value>    

  15.     </property>    

  16. </bean>   

  

Xml代码  收藏代码

  1. <bean id="sqlSessionFactory_peccancy" class="org.mybatis.spring.SqlSessionFactoryBean">  

  2.     <property name="dataSource" ref="dataSource_peccancy" />  

  3.     <property name="mapperLocations">  

  4.         <list>  

  5.             <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>  

  6.             <value>classpath*:net/yhte/web/peccancy/**/mapper/*Mapper.xml</value>  

  7.         </list>  

  8.     </property>  

  9. </bean>  

  10. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  

  11.     <property name="basePackage" value="net.yhte.web.peccancy.**.dao" />  

  12.     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_peccancy"></property>  

  13. </bean>  

  14. <bean id="sqlSessionFactory_pap" class="org.mybatis.spring.SqlSessionFactoryBean">  

  15.     <property name="dataSource" ref="dataSource_pap" />  

  16.     <property name="mapperLocations">  

  17.         <list>  

  18.             <value>classpath*:net/yhte/web/pap/**/mapper/*Mapper.xml</value>  

  19.             <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>  

  20.         </list>  

  21.     </property>  

  22. </bean>  

  23. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  

  24.     <property name="basePackage" value="net.yhte.web.pap.**.dao" />  

  25.     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_pap"></property>  

  26. </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>

  配置文件如下:

Xml代码  收藏代码

  1. <bean id="sqlSessionFactory_peccancy" class="org.mybatis.spring.SqlSessionFactoryBean">  

  2.         <property name="dataSource" ref="dataSource_peccancy" />  

  3.         <property name="mapperLocations">  

  4.             <list>  

  5.                 <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>  

  6.                 <value>classpath*:net/yhte/web/**/mapper/*Mapper.xml</value>  

  7.             </list>  

  8.         </property>  

  9.     </bean>  

  10.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  

  11.         <property name="annotationClass" value="net.yhte.common.service.PeccancyRepository"></property>  

  12.         <property name="basePackage" value="net.yhte.web.**.dao" />  

  13.         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_peccancy"></property>  

  14.     </bean>  

  15.     <bean id="sqlSessionFactory_pap" class="org.mybatis.spring.SqlSessionFactoryBean">  

  16.         <property name="dataSource" ref="dataSource_pap" />  

  17.         <property name="mapperLocations">  

  18.             <list>  

  19.                 <value>classpath:net/yhte/common/query/mapper/PageData_Mapper.xml</value>  

  20.                 <value>classpath*:net/yhte/web/**/mapper/*Mapper.xml</value>  

  21.             </list>  

  22.         </property>  

  23.     </bean>  

  24.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  

  25.         <property name="annotationClass" value="net.yhte.common.service.PapRepository"></property>  

  26.         <property name="basePackage" value="net.yhte.web.**.dao" />  

  27.         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_pap"></property>  

  28.     </bean>  

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

Java代码  收藏代码

  1. public @interface PeccancyRepository {  

  2.   

  3. }  

  4.   

  5. public @interface PapRepository {  

  6.   

  7. }  

 

 

Java代码  收藏代码

  1. // 使用dataSource_pap 数据源    

  2. @PapRepository  

  3. public interface UserMapper {  

  4.     List<User> find(UserQueryBean userQueryBean);  

  5. }  

  6. // 使用dataSource_peccancy 数据源    

  7. @PeccancyRepository  

  8. public interface ParameterMapper{  

  9.   

  10.     List<Parameter> find(ParameterQueryBean queryBean);  

  11. }  

 

获取【下载地址】   

最主流的Java后台框架 springmvc spring mybatis SSM 项目源码


© 著作权归作者所有

w
粉丝 0
博文 3
码字总数 2975
作品 0
南宁
私信 提问
spring+mybatis 配置了三个数据源,事物失效

问题: spring+mybatis 配置了三个数据源,事物失效,手动使用 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 也不回滚; 背景: 有个项目使用SSM框架,需要访问...

太黑_thj
2017/04/11
236
0
Spring+MyBatis多数据源配置实现

jdbc和log4j的配置 #定义输出格式ConversionPattern=%d %-5p [%t] %c - %m%n log4j.rootLogger=DEBUG,Consolelog4j.logger.com.cnblogs.lzrabbit=DEBUGlog4j.logger.org.springframework=ER......

引鸩怼孑
2015/06/17
305
3
PropertyPlaceholderConfigurer 无效的问题

问题描述: 这两天自己配置SPring+MyBatis遇到了个问题,搞了一天才搞定。就是PropertyPlaceholderConfigurer加载配置之后在DatasSource中的使用无效的问题。 以下是配置 <bean id="property...

Lubby
2015/12/08
356
1
使用Spring Profile和Mybatis进行多个数据源(H2和Mysql)的切换

最近在做WebMagic的后台,遇到一个问题:后台用到了数据库,本来理想情况下是用Mysql,但是为了做到开箱即用,也整合了一个嵌入式数据库H2。这里面就有个问题了,如何用一套代码,提供对Mys...

黄亿华
2014/03/20
4.8K
3
spring+mybatis_多数据源配置

主从数据源配置 分库分表数据源配置 利用动态数据源和AOP实现分库 1.application.yml文件中配置多个数据源 2.配置多个 datasource bean 3.定义数据源枚举类 4.定义DynamicDataSource 该类继承...

grace_233
2018/10/07
83
0

没有更多内容

加载失败,请刷新页面

加载更多

北漂的生活成本到底有多大?聊一聊我最真实的感受

北京的生活成本是不是很大?这是很多朋友心中的困惑,有很多我身边的朋友在没毕业之前就觉得北京的生活成本很大,在找工作的时候直接放弃了找北京工作的打算,目标定向了成都、杭州、西安等这...

gzc426
17分钟前
10
0
Hystrix 分布式系统限流、降级、熔断框架

为什么需要Hystrix 在大中型分布式系统中,通常系统很多依赖,如下图: 在高并发访问下,这些依赖的稳定性与否对系统的影响非常大,但是依赖有很多不可控问题:如网络连接缓慢,资源繁忙,暂时...

Java架构师ya七
37分钟前
7
0
YUM仓库配置及命令详解

导读 通过源代码编译的方式安装程序在灵活性、可定制性方面具有无可比拟的优势,但也正因为这种特性给管理员带来了额外的维护开销,当应用在大规模的服务器群集时存在一定的局限性。那么就需...

问题终结者
58分钟前
13
0
docker初学者

docker简介 在真正使用这项技术之前很难深刻的理解它的概念。 从简单的方面来说,docker就是一个轻量级的虚拟机。接下去的学习首先不妨抱着这个想法来看,让后慢慢寻找差别,最终我们会回来试...

街角的小丑
今天
17
0
了解下Hz单位的意思

今天看到计组的突然看到Hz这个单位,突然不知道它是啥意思,就百度了解啦下。 赫,是频率的基本单位,为纪念验证电磁波存在的德国物理学家海因里希·鲁道夫·赫兹(Heinrich Rudolf Hertz)而...

南桥北木
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部