jeesite添加多数据源

为了减轻一些我们数据库的压力,我们准备再配置另一个数据源。

1.jeesite.properties 添加数据源信息,(url2,username2,pawwword2) 

2.修改spring-context.xml(src/main/resources/)

1> 配置两个数据源

 第一个数据源

<!-- 基本属性 url、user、password -->
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />

 第二个数据源

<!-- 基本属性 url、user、password -->
		<property name="url" value="${jdbc2.url}" />
		<property name="username" value="${jdbc2.username}" />
		<property name="password" value="${jdbc2.password}" />

我这里只罗列了连接地址,账号,密码。还有其他配置大家可以根据需要自行来配置

2>将dataSource修改为dynamicDataSource 

 	<!-- MyBatis begin -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dynamicDataSource"/>
        <property name="typeAliasesPackage" value="com.scliwei.cms"/>
        <property name="typeAliasesSuperType" value="com.scliwei.cms.common.persistence.BaseEntity"/>
        <property name="mapperLocations" value="classpath:/mappings/**/*.xml"/>
		<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
    </bean>

3>将dataSource修改为dynamicDataSource 

3.添加DynamicDataSource.java(package com.scliwei.cms.modules.bus.bestpay.config)

 

package com.scliwei.cms.modules.bus.bestpay.config;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

//多个数据源切换
public class DynamicDataSource extends AbstractRoutingDataSource {

    private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();

    public static String getCurrentLookupKey() {
        return (String) contextHolder.get();
    }

    public static void setCurrentLookupKey(String currentLookupKey) {
        contextHolder.set(currentLookupKey);
    }


    @Override
    protected Object determineCurrentLookupKey() {
        return getCurrentLookupKey();
    }
}

4测试

在controller测试。 

测试结果。成功

注意:切换数据源,使用非默认的数据源的时候,使用完成要切换回来,否则有可能会发生错误。

一定要在调用dao层之前用否则会报错

特别注意:

try {
			DynamicDataSource.setCurrentLookupKey("dataSource2");
			orderDao.updateSelective(partner);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DynamicDataSource.setCurrentLookupKey("dataSource");
		}

因为在线上的时候 切换数据源后,有时候就会出现切换不回去,导致报错,最后加了 try catch finally 来切换回来默认的数据源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值