国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Spring與Mybatis相結(jié)合實(shí)現(xiàn)多數(shù)據(jù)源切換功能

2019-11-26 14:09:04
字體:
供稿:網(wǎng)友

廢話不多說,關(guān)鍵代碼如下所示:

1. 代碼: DbContextHolder

public class DbContextHolder {//線程安全的ThreadLocalprivate static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();public static void setDbType(String dbType) {contextHolder.set(dbType);}public static String getDbType() {return ((String)contextHolder.get());}public static void clearDbType() {contextHolder.remove();}} 

2. 代碼 : DynamicDataSource

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends AbstractRoutingDataSource {@Overridepublic Object determineCurrentLookupKey() {return DbContextHolder.getDbType();}} 

3.代碼: spring.xml

<!-- 數(shù)據(jù)源屬性配置文件 --><context:property-placeholder location="classpath:ibatis.properties" /><bean id="jksh" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><!-- Connection Info --><property name="driverClassName" value="${driver.jksh}" /><property name="url" value="${url.jksh}" /><property name="username" value="${username.jksh}" /><property name="password" value="${password.jksh}" /><!-- Connection Pooling Info --><property name="maxIdle" value="${maxIdle.jksh}" /><property name="maxActive" value="${maxActive.jksh}" /><property name="defaultAutoCommit" value="false" /><property name="timeBetweenEvictionRunsMillis"value="${timeBetweenEvictionRunsMillis.jksh}" /><property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis.jksh}" /></bean><bean id="jclt" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><!-- Connection Info --><property name="driverClassName" value="${driver.jclt}" /><property name="url" value="${url.jclt}" /><property name="username" value="${username.jclt}" /><property name="password" value="${password.jclt}" /><!-- Connection Pooling Info --><property name="maxIdle" value="${maxIdle.jclt}" /><property name="maxActive" value="${maxActive.jclt}" /><property name="defaultAutoCommit" value="false" /><property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis.jclt}" /><property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis.jclt}" /></bean><bean id="dataSource" class="com.jclt.service.commons.DynamicDataSource"><property name="targetDataSources"><map key-type="java.lang.String"><entry key="jksh" value-ref="jksh" /><entry key="jclt" value-ref="jclt" /></map></property><property name="defaultTargetDataSource" ref="jksh" /></bean> 

4. 代碼:main方法

import javax.sql.DataSource;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.FileSystemResource;import org.springframework.core.io.Resource;import com.jclt.service.commons.DbContextHolder;import com.jclt.service.model.User;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.SqlSessionFactoryBean;public class Text {/*** @param args*/public static void main(String[] args) {ApplicationContext appContext = new ClassPathXmlApplicationContext("client-beans.xml");DbContextHolder.setDbType("jclt");String res="src/main/resources/ibatis-config.xml";DataSource datasource=(DataSource) appContext.getBean("dataSource");SqlSessionFactoryBean bean=new SqlSessionFactoryBean();bean.setDataSource(datasource);Resource resource=new FileSystemResource(res);bean.setConfigLocation(resource);try {SqlSessionFactory sessionfactory = bean.getObject();SqlSession session=sessionfactory.openSession();User user=session.selectOne("com.jclt.service.Dao.readJKSH.findOne");System.out.println(user.getName());} catch (Exception e) {e.printStackTrace();}DbContextHolder.setDbType("jksh");String res1="src/main/resources/ibatis-config.xml";DataSource datasource1=(DataSource) appContext.getBean("dataSource");SqlSessionFactoryBean bean1=new SqlSessionFactoryBean();bean1.setDataSource(datasource1);Resource resource1=new FileSystemResource(res1);bean1.setConfigLocation(resource1);try {SqlSessionFactory sessionfactory = bean.getObject();SqlSession session=sessionfactory.openSession();User user=session.selectOne("com.jclt.service.Dao.readJKSH.findOne");System.out.println(user.getName());} catch (Exception e) {e.printStackTrace();}}}

以上所述是小編給大家介紹的Spring與Mybatis相結(jié)合實(shí)現(xiàn)多數(shù)據(jù)源切換功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 博湖县| 宜春市| 宣汉县| 京山县| 荣成市| 崇礼县| 平武县| 东城区| 抚远县| 巢湖市| 大方县| 兰考县| 金华市| 巴林左旗| 苏尼特左旗| 汽车| 金寨县| 新干县| 灵石县| 江西省| 招远市| 富蕴县| 兴文县| 涞源县| 岳池县| 乐都县| 淅川县| 万源市| 高雄市| 梁河县| 皋兰县| 循化| 富宁县| 道真| 上饶市| 隆林| 绍兴市| 靖边县| 历史| 巴林右旗| 阜城县|