当前位置: 移动技术网 > IT编程>开发语言>Java > Spring MVC Mybatis多数据源的使用实例解析

Spring MVC Mybatis多数据源的使用实例解析

2019年07月22日  | 移动技术网IT编程  | 我要评论

魔鬼树,女阴泉,梨园春韩鹏飞

项目需要从其他网站获取数据,因为是临时加的需求,在开始项目时没想到需要多数据源

于是百度了一下,发现只需要改动一下spring 的applicationcontext.xml文件和编写三个工具类就可以完美实现

applicationcontext.xml

<!-- 多数据源配置 -->
 <bean id="ds1" class="org.apache.commons.dbcp.basicdatasource">
  <property name="driverclassname" value="${jdbc.driverclassname}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="" />
 </bean>
 <bean id="ds2" class="org.apache.commons.dbcp.basicdatasource">
  <property name="driverclassname" value="" />
  <property name="url" value="" />
  <property name="username" value="" />
  <property name="password" value="" />
 </bean>
 <!-- 动态配置数据源 -->
 <bean id="datasource" class="com.test.utils.dynamicdatasource">//这里是你项目里dynamicdatasource.java的路径
  <property name="targetdatasources">
   <map key-type="java.lang.string">
    <entry value-ref="ds_admin" key="ds1"></entry>
    <entry value-ref="ds_partner" key="ds2"></entry>
   </map>
  </property>
  <!-- 默认使用ds1的数据源 -->
  <property name="defaulttargetdatasource" ref="ds_admin"></property>  
 </bean>

datasourcecontextholder.java

public class datasourcecontextholder {
 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();
 }
}

datasourcetype.java(设置静态变量)

public class datasourcetype {
 // 默认数据库
 public static final string source_admin = "ds1";
 // 第二个数据库,在applicationcontext.xml里的id
 public static final string source_partner = "ds2";
}

接下来这个是关键dynamicdatasource.java 它继承了abstractroutingdatasource中的抽象方法determinecurrentlookupkey是实现数据源的route的核心.这里对该方法进行override。

import org.springframework.jdbc.datasource.lookup.abstractroutingdatasource;
public class dynamicdatasource extends abstractroutingdatasource {
 @override
 protected object determinecurrentlookupkey() {
  return datasourcecontextholder.getdbtype();
 }
}

以上所述是小编给大家介绍的spring mvc mybatis多数据源的使用实例解析,希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网