package com.common;
import com.ibatis.sqlmap.client.SqlMapClient;
public interface MultiDBService {
/**
* 根据数据库名,获取对应的sqlclient
* @param dbname
* @return
*/
public SqlMapClient getClient(String dbname);
}
package com.common;
import java.util.Map;
import com.ibatis.sqlmap.client.SqlMapClient;
public final class MultiDBServiceImpl implements MultiDBService{
Map<String, SqlMapClient> clients;
public SqlMapClient getClient(String dbname) {
SqlMapClient ret = clients.get(dbname);
return ret;
}
public Map<String, SqlMapClient> getClients() {
return clients;
}
public void setClients(Map<String, SqlMapClient> clients) {
this.clients = clients;
}
}
package com.common;
public interface BaseService {
}
package com.common;
public class BaseServiceImpl implements BaseService{
public MultiDBService dbs;
public MultiDBService getDbs() {
return dbs;
}
public void setDbs(MultiDBService dbs) {
this.dbs = dbs;
}
}
bean配置
<bean id="mydatasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<property name="initialSize" value="16"/>
<property name="maxActive" value="512"/>
<property name="maxIdle" value="16"/>
<property name="maxWait" value="3000"/>
<property name="validationQuery" value="select COUNT(*) from DUAL"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="10000"/>
<property name="numTestsPerEvictionRun" value="5"/>
<property name="logAbandoned" value="true"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="300"/>
</bean>
<bean id="mysqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/sqlmap-configs/db_config.xml"/>
<property name="dataSource" ref="mydatasource"/>
</bean>
<bean id="dbs" class="com.common.MultiDBServiceImpl">
<property name="clients">
<map>
<entry>
<key><value>db_client</value></key>
<ref bean="mysqlMapClient"/>
</entry>
</map>
</property>
</bean>