Spring + Mybatis配置多数据库

目前有两种思路:

1.动态切换数据源,需要自定义一个数据源类继承自AbstractRoutingDataSource抽象类,这种方式有弊端,如果是并发系统中,当你把数据源改了,系统中所有的操作数据源都改了,即使你立马再改回去,还是有风险;

2.建立两套数据源,在spring加载Mapper时关联不同的数据源。

以下仅介绍第二种方式:

(1)新建两套数据源:

数据源一:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	                    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
	                    http://www.springframework.org/schema/aop     
	                    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd     
	                    http://www.springframework.org/schema/tx      
	                    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	                    http://www.springframework.org/schema/context
    					http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  
    
	<!-- 配置DataSource数据源 -->
    <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"  
         destroy-method="close">  
         <!-- 数据库驱动 -->  
         <property name="driverClass" value="${jdbc_driverClassName}" />  
         <!-- 相应驱动的jdbcUrl -->  
         <property name="jdbcUrl" value="${jdbc_url}" /> 
         <!-- 数据库的用户名 -->  
         <property name="username" value="${jdbc_username}" />  
         <!-- 数据库的密码 -->  
         <property name="password" value="${jdbc_password}" />  
       
       
         
        <!-- /** Maximum age of an unused connection before it is closed off. */ -->
		<!-- 设置分区个数。这个参数默认为1,建议3-4(根据特定应用程序而定)。
		 为了减少锁竞争和改善性能,从当前线程分区(thread-affinity)中获取一个connection,
		 也就是这个样子:partitions[Thread.currentThread().getId() % partitionCount]。
		 当拥有充足的短期(short-lived)的线程时候,这个参数设置越大,性能越好。
		当超过一定的阀值时,连接池的维护工作就可能对性能造成一定的负面影响(仅当分区上的connection使用耗尽时) -->
		<property name="partitionCount" value="${db.partitionCount}" />
		
		<!-- 设置每个分区含有connection最大个数。这个参数默认为2。如果小于2,BoneCP将设置为50。
		比如:partitionCount设置为3,maxConnectionPerPartition设置为5,你就会拥有总共15个connection。
		注意:BoneCP不会将这些connection一起创建出来,而是说在需要更多connection的时候从minConnectionsPerPartition参数开始逐步地增长connection数量。  -->
		<property name="maxConnectionsPerPartition" value="${db.maxConnectionsPerPartition}" />
		
		<!-- 设置每个分区含有connection最大小个数。这个参数默认为0。  -->
		<property name="minConnectionsPerPartition" value="${db.minConnectionsPerPartition}" />
		
		<!-- 设置分区中的connection增长数量。这个参数默认为1。
		当每个分区中的connection大约快用完时,BoneCP动态批量创建connection,
		这个属性控制一起创建多少个connection(不会大于maxConnectionsPerPartition)。
		注意:这个配置属于每个分区的设置。  -->
		<property name="acquireIncrement" value="${db.acquireIncrement}" />
		
		<!-- 设置连接池阀值。这个参数默认为20。如果小于0或是大于100,BoneCP将设置为20。
		连接池观察线程(PoolWatchThread)试图为每个分区维护一定数量的可用connection。
		这个数量趋
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值