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

作者:mrr 时间:2022-02-13 20:37:19 

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

于是百度了一下,发现只需要改动一下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多数据源的使用实例解析网站的支持!

标签:spring,mvc,数据源
0
投稿

猜你喜欢

  • SSM使用mybatis分页插件pagehepler实现分页示例

    2022-04-02 00:20:53
  • Java基于链表实现栈的方法详解

    2022-07-02 11:39:20
  • Spring Cloud Hystrix 服务降级限流策略详解

    2022-05-02 15:20:27
  • Java的关键字与保留字小结

    2021-05-30 10:20:50
  • 使用idea和gradle编译spring5源码的方法步骤

    2022-04-02 12:21:53
  • java.lang.Runtime.exec的左膀右臂:流输入和流读取详解

    2023-08-06 04:59:03
  • Java 中的Printstream介绍_动力节点Java学院整理

    2021-12-21 06:08:36
  • C#中一些你可能没用过的调试窗口的方法

    2022-08-07 09:01:16
  • Springcloud seata分布式事务实现代码解析

    2022-12-27 20:14:01
  • Java 实战图书管理系统的实现流程

    2023-12-19 05:11:13
  • Java 向上转型和向下转型的详解

    2022-06-21 08:28:03
  • 详解Java单元测试之Junit框架使用教程

    2022-03-06 02:55:56
  • Spring实现动态切换多数据源的解决方案

    2023-05-21 13:07:15
  • 浅析java修饰符访问权限(动力节点Java学院整理)

    2023-07-13 18:07:34
  • spring boot项目打包成war在tomcat运行的全步骤

    2023-12-17 19:20:36
  • springboot 整合 sa-token简介及入门教程

    2023-03-24 01:10:45
  • MyBatis字段名和属性名不一致的解决方法

    2022-12-15 18:15:22
  • java web开发之购物车功能实现示例代码

    2023-01-24 16:52:55
  • Mybatis中的resultType和resultMap查询操作实例详解

    2022-02-24 17:05:42
  • C#9.0推出的4个新特性介绍

    2021-10-10 07:49:29
  • asp之家 软件编程 m.aspxhome.com