mybatis mysql转oracle_spring mvc+mybatis+多数据源切换 选取oracle,mysql作为例子切换数据源...

spring mvc+mybatis+多数据源切换 选取oracle,mysql作为例子切换数据源。oracle为默认数据源,在测试的action中,进行mysql和oracle的动态切换。web.xml

Java代码  60264136_1.png

webAppRootKey

trac

org.springframework.web.util.Log4jConfigListener

CharacterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

utf8

forceEncoding

true

CharacterEncodingFilter

/*

dispatcher

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

/WEB-INF/dispatcher.xml

1

dispatcher

*.action

org.springframework.web.context.ContextLoaderListener

dispatcher.xml

Java代码  60264136_1.png

UTF-8

applicationContext.xml

Java代码  60264136_1.png

配置 parentDataSource 的父bean.再配置多个数据源继承这个父bean,对driverClass,url,username,password,等数据源连接参数进行各自的重写。例如 mySqlDataSource ,在 DataSources bean中注入所有要切换的数据源,并且设置默认的数据源。DataSourceInstances.java

Java代码  60264136_1.pngpublic class DataSourceInstances{

public static final String MYSQL="MYSQL";

public static final String ORACLE="ORACLE";

}

定义数据源的标识, 和applicationContext.xml中 DataSources 的 targetDataSources 的key对应DataSourceSwitch.java

Java代码  60264136_1.pngpublic class DataSourceSwitch{

private static final ThreadLocal contextHolder=new ThreadLocal();

public static void setDataSourceType(String dataSourceType){

contextHolder.set(dataSourceType);

}

public static String getDataSourceType(){

return (String) contextHolder.get();

}

public static void clearDataSourceType(){

contextHolder.remove();

}

}DataSources.java

Java代码  60264136_1.pngimport org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class DataSources extends AbstractRoutingDataSource{

@Override

protected Object determineCurrentLookupKey() {

return DataSourceSwitch.getDataSourceType();

}

}

配置于applicationContext 中,线程局部变量ThreadLocal contextHolder 保存当前需要的数据源类型,当 DataSourceSwitch.setDataSourceType(DataSourceInstances.XXX) 保存当前需要的数据源类型的时候,DataSources 会从当前线程中查找线程变量的数据源类型,从而决定使用何种数据源TestAction.java

Java代码  60264136_1.png@Controller

@SuppressWarnings("unused")

public class TestAction {

@Autowired

TestMapper testMapper;

@RequestMapping("/test.action")

public ModelAndView test(

HttpServletRequest request,

HttpServletResponse resp){

ModelAndView model = new ModelAndView("test");

model.addObject("test1", "这是一个测试,获取默认数据连接MYSQL:"+testMapper.test());

DataSourceSwitch.setDataSourceType(DataSourceInstances.ORACLE);

model.addObject("test2", "这是一个测试,获取数据连接ORACLE:"+testMapper.test());

DataSourceSwitch.setDataSourceType(DataSourceInstances.MYSQL);

model.addObject("test3", "这是一个测试,获取数据连接MYSQL:"+testMapper.test());

return model;

}

}

springmvc + mybatis整合详细,及遇到的问题请参看以下资料:

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值