Spring MVC Mybatis多数据源的使用实例解析
程序员文章站
2024-03-09 14:23:23
项目需要从其他网站获取数据,因为是临时加的需求,在开始项目时没想到需要多数据源
于是百度了一下,发现只需要改动一下spring 的applicationcontext.x...
项目需要从其他网站获取数据,因为是临时加的需求,在开始项目时没想到需要多数据源
于是百度了一下,发现只需要改动一下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多数据源的使用实例解析,希望对大家有所帮助
下一篇: 牛客网刷题3——计算字符个数(C++)