mybatis动态连接数据库
2011-11-28 18:29
302 查看
applicationContext.xml
<bean id="defaultDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${default.driver}" />
<property name="url" value="${default.url}" />
<property name="username" value="${default.username}" />
<property name="password" value="${default.password}" />
</bean>
<bean id="dataSource" class="com.ceict.ems.common.db.DynamicDataSource">
<property name="targetDataSources">
<map>
<entry key="default" value-ref="defaultDataSource" />
</map>
</property>
</bean>
public class DynamicDataSource extends AbstractRoutingDataSource {
private Map<Object, Object> _targetDataSources;
@Override
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.getDataSource();
}
public void setTargetDataSources(Map<Object, Object> targetDataSources) {
this._targetDataSources = targetDataSources;
super.setTargetDataSources(targetDataSources);
afterPropertiesSet();
}
public String getDbtype(String key) {
String driver = ((BasicDataSource) _targetDataSources.get(key))
.getDriverClassName();
if ("oracle.jdbc.driver.OracleDriver".equals(driver)) {
return "oracle";
} else if ("com.mysql.jdbc.Driver".equals(driver)) {
return "mysql";
}
return null;
}
public void addTargetDataSource(String key, DataSource dataSource) {
_targetDataSources.put(key, dataSource);
this.setTargetDataSources(_targetDataSources);
}
public static DataSource createDataSource(String driverClassName,
String url, String username, String password) {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setTestWhileIdle(true);
if ("oracle.jdbc.driver.OracleDriver".equals(driverClassName)) {
dataSource.setValidationQuery("SELECT 1 FROM DUAL");
} else if ("com.mysql.jdbc.Driver".equals(driverClassName)) {
dataSource.setValidationQuery("SELECT NOW()");
}
return dataSource;
}
}
动态创建
DynamicDataSource dynamicDataSource = ApplicationUtil
.getBean(DynamicDataSource.class);
BasicDataSource dataSource = DynamicDataSource.createDataSource(driverClassName,url,userName,password)
dynamicDataSource.addTargetDataSource("dbkey", dataSource );
DataSourceContextHolder.setDataSource("dbkey");
// 通过以上语句可以将数据库连接配置修改为当前设置的
//执行自己的DAO方法
DataSourceContextHolder.clearDataSource();//恢复数据库的配置为applicationContext.xml默认的配置
<bean id="defaultDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${default.driver}" />
<property name="url" value="${default.url}" />
<property name="username" value="${default.username}" />
<property name="password" value="${default.password}" />
</bean>
<bean id="dataSource" class="com.ceict.ems.common.db.DynamicDataSource">
<property name="targetDataSources">
<map>
<entry key="default" value-ref="defaultDataSource" />
</map>
</property>
</bean>
public class DynamicDataSource extends AbstractRoutingDataSource {
private Map<Object, Object> _targetDataSources;
@Override
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.getDataSource();
}
public void setTargetDataSources(Map<Object, Object> targetDataSources) {
this._targetDataSources = targetDataSources;
super.setTargetDataSources(targetDataSources);
afterPropertiesSet();
}
public String getDbtype(String key) {
String driver = ((BasicDataSource) _targetDataSources.get(key))
.getDriverClassName();
if ("oracle.jdbc.driver.OracleDriver".equals(driver)) {
return "oracle";
} else if ("com.mysql.jdbc.Driver".equals(driver)) {
return "mysql";
}
return null;
}
public void addTargetDataSource(String key, DataSource dataSource) {
_targetDataSources.put(key, dataSource);
this.setTargetDataSources(_targetDataSources);
}
public static DataSource createDataSource(String driverClassName,
String url, String username, String password) {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setTestWhileIdle(true);
if ("oracle.jdbc.driver.OracleDriver".equals(driverClassName)) {
dataSource.setValidationQuery("SELECT 1 FROM DUAL");
} else if ("com.mysql.jdbc.Driver".equals(driverClassName)) {
dataSource.setValidationQuery("SELECT NOW()");
}
return dataSource;
}
}
动态创建
DynamicDataSource dynamicDataSource = ApplicationUtil
.getBean(DynamicDataSource.class);
BasicDataSource dataSource = DynamicDataSource.createDataSource(driverClassName,url,userName,password)
dynamicDataSource.addTargetDataSource("dbkey", dataSource );
DataSourceContextHolder.setDataSource("dbkey");
// 通过以上语句可以将数据库连接配置修改为当前设置的
//执行自己的DAO方法
DataSourceContextHolder.clearDataSource();//恢复数据库的配置为applicationContext.xml默认的配置
相关文章推荐
- MyBatis动态连接数据库,动态传入数据库参数
- MyBatis动态连接数据库,动态传入数据库参数
- MyBatis动态连接数据库,动态传入数据库参数
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- ODBC连接数据库使用动态密码
- delphi ado 动态连接数据库
- 【JSP动态网站】JDBC连接SqlServer 2008数据库
- 运行时动态设置并加密App.Config中的数据库连接字符串
- MyBatis 入门(一)--建立数据库连接及基本操作
- VS2005中如何动态设置数据库连接信息?
- J2EE项目动态切换数据库连接的问题
- delphi中ado如何动态连接数据库
- mybatis连接数据库
- SpringMVC+MyBatis数据库连接报错
- 单个工程中Spring+Mybatis连接多个数据库的配置(个人分享版本)
- 动态设置和修改Membership/Profile/RoleProvider的ConnectionString数据库连接字符串
- mybatis连接数据库的几种方式
- 远程连接与数据库状态的联系――本质是监听器动态注册造成差异
- 动态连接数据库及动态建立ODBC,DSN(ZT) 选择自 SafeF8 的 Blog
- Spring Boot MyBatis 连接数据库