一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Spring與Mybatis相結(jié)合實現(xiàn)多數(shù)據(jù)源切換功能

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

2020-05-20 12:14Alfa JAVA教程

這篇文章主要介紹了Spring與Mybatis相結(jié)合實現(xiàn)多數(shù)據(jù)源切換功能的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

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

1. 代碼: DbContextHolder

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class DbContextHolder {
//線程安全的ThreadLocal
private 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

?
1
2
3
4
5
6
7
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
public Object determineCurrentLookupKey() {
return DbContextHolder.getDbType();
}
}

3.代碼: spring.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!-- 數(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方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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é)合實現(xiàn)多數(shù)據(jù)源切換功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: a一级毛片录像带 录像片 | 亚洲日本视频在线观看 | 亚洲2017久无码 | 亚洲 日韩 在线 国产 视频 | 日本高清va不卡视频在线观看 | 国产一区二区三区高清视频 | 美女逼逼喷水 | 久久婷婷丁香五月色综合啪免费 | 女性全身裸露无遮挡 | 午夜精品久视频在线观看 | 欧美在线视频一区二区 | 欧洲肥女大肥臀 | 污到湿的爽文免费阅读 | 亚洲午夜精品久久久久 | 被巨大黑人的翻白眼 | 性姿势女人嗷嗷叫图片 | 我和寂寞孕妇的性事 | 精品国产品在线18年 | 精品无码一区二区三区中文字幕 | 成人网视频免费播放 | 亚洲AV无码专区国产精品麻豆 | 日本中文字幕一区二区有码在线 | 成人在线视频播放 | 欧美一级裸片 | 5x社区发源地最新地址 | 国产成人福利免费视频 | 亚洲国产韩国欧美在线不卡 | 亚洲高清无在码在线电影 | 顶级欧美做受xxx000 | 免费欧美视频 | 日本无遮挡吸乳视频看看 | 72张让男人一看就硬的图片 | 精品图区 | 超h 超重口 高h 污肉1v1 | 草草影院永久在线观看 | 黄a级 | 女bbbbxxxx视频 | 亚洲国产情侣一区二区三区 | 青草免费在线观看 | 欧美在线一二三区 | 国产亚洲综合久久 |