Sem mais delongas, o código -chave é o seguinte:
1. Código: DBContextholder
public class DBContextHolder {// ThreadSafe ThreadLocalPrivate estático Final Threadlocal <String> contextHolder = new ThreadLocal <String> (); public static void SetDbtype (String dbtype) {contexlder.Set (dbtype);} public stration strat. ((String) contextHolder.get ());} public static void cleardbtype () {contextholder.remove ();}} 2. Código: DynamicDataSource
importar org.springframework.jdbc.dataSource.lookup.abstractoutingDataSource; classe pública dinâmicaDataSource estende abstractroutingDataSource {@OverridePublic Object determineSlookLeepKey () {return dBContextholder.getDbtyPe 3. Código: spring.xml
Arquivo de configuração da propriedade da fonte de dados de dados-> <Contexto: Property-placeholder Location = "ClassPath: ibatis.properties" /> <bean id = "jksh" Destroy-Method = "Close"> <!-Informações de conexão-> <Nome da propriedade "" Urname ") name = "nome de usuário" value = "$ {userName.jksh}" /> <propriedade name = "senha" value = "$ {senha.jksh}" /> <!-conexão infool info-> <propriedades name = "maxidle" value = "$ {maxid.jksh}" /> <name = "max mha name = "defaultAutocomit" value = "false" /> <propriedade name = "timebetweenEvictionRunsmillis" value = "$ {timebetweenEvictionRunsmillis.jksh}" /> <name = "mineVictableIdletimemillis" value "$ {mineanvictaben> <temEmilis.jkshhshhshshhshshhshshhshshhshshhshshhshshhshshhshshhshshhshshhshhshhshhshhshshshshshshshshshshshshshshshshshshshshshshshshshshshshshhshhshhs. id = "jclt" destruir-method = "Close"> <!-Informações da conexão-> <propriedade name = "driverclassName" value = "$ {driver.jclt}" /> <names name = "url" value = "$ {url.jclt}" /> <nome da propriedade "" username "=" $ {username.jct} " /> <names =" username "" = "$ {username.jct}" /> <nome da propriedade "") value = "$ {senha.jclt}" /> <!-Informações do pool de conexões-> <propriedade name = "maxidle" value = "$ {maxidle.jclt}" /> <propriedades name = "maxactive" value = "$ {maxactive.jclt}" /> <nome da propriedade = "defaultA" value = "$ {timebetweenEvictionRunsmillis.jclt}" /> <propriedade name = "minevictableIdletimEmillis" value = "$ {mineVictableIdletimemillis.jclt}" /> < /bean> <bean id = "dataSource"> <propriedades (names) key-type = "java.lang.string"> <entradas key = "jksh" value-ref = "jksh" /> <entrada key = "jclt" value-ref = "jclt" /> < /map> < /property> <names name = "defaultTargetDataSource" = "jksh" /> 4. Código: Método Principal
importar javax.sql.dataSource; importar org.springframework.context.applicationContext; importar org.springframework.context.support.classpathxmlapplicationContext; import org.springframework.core.io.fileSystemResResCext; Import.sPringFramework.Core.io.filesyStemResResCext; Import.sPringFramework.Core.io.filesyStemResRces; com.jclt.service.commons.dbcontextholder; importar com.jclt.service.model.user; importar org.apache.ibatis.session.sqlsession; importação org. args*/public static void main (string [] args) {ApplicationContext appContext = new ClassPathXMLApplicationContext ("client-beans.xml"); dbConteXTHOLDER.SETDBTYPE ("jclt"); resst = "src/main/recursos/ibtis-config.xn; appContext.getBean("dataSource");SqlSessionFactoryBean bean=new SqlSessionFactoryBean();bean.setDataSource(datasource);Resource resource=new FileSystemResource(res);bean.setConfigLocation(resource);try {SqlSessionFactory sessionfactory = bean.getObject();SqlSession session = sessionFactory.opensssion (); usuário do usuário = session.SelectOne ("com.jclt.service.dao.readjksh.findone"); system.out.println (user.getName ());} catch (exceção e) {.printStackTrace ();} dbConteTholder.TELTEDPELTERD. res1 = "src/main/recursos/ibatis-config.xml"; DataSource DataSource1 = (DataSource) AppContext.getBean ("DataSource"); SQLSessionFactoryBean Bean1 = sqlSessionFactoryBean (); bean1.SetDataSourCean (DataSourCe (DataSourCean1); FilesystemResource (res1); bean1.setConfigLocation (Resource1); try {sqlSessionFactory sessionFactory = bean.getObject (); sqlSession session = sessionFactory.opensssion (); usuário; usuário; user = session.SelectOne ("com.jclt.service.dao.readjksh.findone"); system.out.println (user.getName ());} catch (Exceção e) {e.printStacktrace ();}}}O exposto acima é a combinação de primavera e mybatis para implementar a função de comutação de origem de vários dados que o editor apresentou a você. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!