더 이상 고민하지 않으면 키 코드는 다음과 같습니다.
1. 코드 : DBCONTEXTHOLDER
공개 클래스 DBCONTEXTHOLDER {// ThreadSafe ThreadLocalPrivate 정적 최종 최종 ThreadLocal <string> ContexTholder = New ThreadLocal <string> (); Public Static void setdbtype (String dbtype) {contextholder.set (dbtype);} public string getdbtype ((String) ContexTholder.get ());} public static void cleardbtype () {contextholder.remove ();}} 2. 코드 : DynamicDatasource
import org.springframework.jdbc.datasource.lookup.abstractroutingdatasource; public class dynamicdatasource는 attractroutingdatasource {@overridepublic object decniminecurrentLookupkey (return dbcontextholder.getdbtype); 3. 코드 : Spring.xml
<!-데이터 소스 속성 구성 파일-> <context : property-placeholder location = "classpath : ibatis.properties" /> <bean id = "jksh"destroy-method = "close"> <!-연결 정보-> <속성 이름 = "driver className"value = "$ {driver.jksh}"/> 이름 = "username"value = "$ {username.jksh}" /> <property name = "password"value = "$ {password.jksh}" /> <!-연결 풀링 정보-> <속성 "value ="$ {maxIdle.jksh} " />"maxActive ""$ {maxActive.jksh} "" 이름 = "defaultAutoCommit"value = "false" /> <속성 이름 = "timebetweenevictionRunsmillis"value = "$ {timebetweenevictionRunsmillis.jksh}" /> <property name = "minevictabledletimemillis"value = "$ {minevictabledletimemilis.jksh}" /> <bean id = "jclt"destroy-method = "close"> <!-연결 정보-> <속성 이름 = "driver className"value = "$ {driver.jclt}" /> <property name = "url"value = "$ {url.jclt}" /> <property name = "username"value = "$ {username.jclt}" /> <property name = "password" value = "$ {password.jclt}" /> <!-연결 풀링 정보-> <속성 이름 = "maxIdle"value = "$ {maxIdle.jclt}" /> <property "value ="$ {maxActive.jclt} " /> <속성 이름 ="defaultAutoCommit ""false " /> value = "$ {timebetweenevictionRunsmillis.jclt}" /> <property name = "minevictableDletimemillis"value = "$ {minevictableDletimemillis.jclt}" /> < /bean> <bean id = "dataSource"> <property name = "targetDataSources"> <map key-rang key = "jksh"value-ref = "jksh" /> <enlic key = "jclt"value-ref = "jclt" /> < /map> < /property name = "defaultTargetDatasource"ref = "jksh" /> < /bean> 4. 코드 : 주요 방법
import javax.sql.datasource; import org.springframework.context.applicationcontext; import org.spramework.context.support.classpathxmlapplicationcontext; import org.springframework.core.filesystemresource; import org.spram.soporce com.jclt.service.commons.dbcontexTholder; import com.jclt.service.model.user; import org.apache.session.sqlsession; import org.apache.ibatis.session.sqlsession actory; import org.mybatis.spring.sqlsampring.secloctorybean; args*/public static void main (string [] args) {ApplicationContext AppContext = new ClassPathXmlApplicationContext ( "Client-Beans.xml"); DBCONTEXTHOLDER.SETDBTYPE ( "jclt"); String Res = "Src/Main/Resources/iBatis-config.xml"; appContext.getBean ( "DataSource"); sqlsessionFactoryBean Bean = new sqlSessionFartoryBean (); bean.setDatasource (dataSource); resource resource = new FileSystemResource (Res); bean.setConfigLocation (resource); sqlsessionsitions (sqlsessionsitions); session = sessionfactory.opensession (); user user = session.selectone ( "com.jclt.service.dao.readjksh.findone"); system.out.println (user.getname ());} catch (exception e) {e.printstacktrace ();} dbcontextholder.setdbtype ( "jksh"; RES1 = "SRC/MAIN/RESSOR/IBATIS-CONFIG.XML"; DATASORCE DATASOURCE1 = (DataSource) AppContext.getBean ( "DataSource"); SqlSessionActoryBean Bean1 = New SQLSESSION ACKORCEBEAN (); BAN1.SETDASORCE (DATASOURCE1); FileSystemResource (Res1); bean1.setconfiglocation (resource1); try {sqlsessionCactory sessionFactory = bean.getObject (); sqlsession session = sessionFactory.Opensession (); user user = session.selectone ( "com.jclt.service.dao.readjksh.findone"); system.out.println (user.getname ());} catch (예외 e) {e.printstacktrace ();}}}위는 Spring과 Mybatis의 조합으로 편집자가 소개 한 다중 데이터 소스 스위칭 기능을 구현하는 것입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!