Sans plus tarder, le code clé est le suivant:
1. Code: DBContextholder
classe publique dbContexTholder {// threadsafe threadlocalprivate statique final threadlocal <stry> contextholder = new ThreadLocal <string> (); public static void setDbType (String dbtype) {contextholder.set (dbtype);} public static static getdbtype () {return); ((String) ContexTholder.get ());} public static void cleardbType () {ContexTholder.Remove ();}} 2. Code: DynamicDatasource
import org.springframework.jdbc.datasource.lookup.abstractroutingDataSource; la classe publique DynamicDataSource étend abstractroutingDatasource {@OverridePublic Deter déterminatRentlookupkey () {return dbcontextholder.getdbtype ();}} 3. Code: Spring.xml
<! - Data Source Fichier de configuration de la propriété -> <Context: propriété-placeholder location = "classpath: ibatis.properties" /> <bean id = "jksh" destre-méthod = "close"> <! - connection info -> <propriété name = "driverclassname" value = "$ {driver.jksh}" /> <propriété nom = "url" value = "$ {url.jks name = "username" value = "$ {username.jksh}" /> <propriété name = "mot de passe" value = "$ {mot de passe.jksh}" /> <! - Informations de pool de connexion -> <propriété name = "maxidle" value = "$ {maxidle.jksh}" /> <propriété name = "maxactive" value = "$ {maxactive.jk} name = "defaultAutoCommit" value = "false" /> <propriété name = "TimeBetweenvictionRunsmillis" value = "$ {timebetweenvictionRunsmillis.jksh}" /> <propriété name = "MineVictableIdleMemillis" value = "$ {MineVictableIdleMellis.jksh}" /> </ bean id = "jclt" destrement-méthod = "close"> <! - Info de connexion -> <propriété name = "driverclassname" value = "$ {driver.jclt}" /> <propriété name = "url" value = "$ {url.jclt}" /> <propriété name = "username" value = "$ {username.jclt}" /> <wom name = "wswonsway" Value = "$ {password.jclt}" /> <! - Info de la mise en commun de connexion -> <propriété name = "maxidle" value = "$ {maxidle.jclt}" /> <propriété name = "maxactive" value = "$ {maxactive.jclt}" /> <propriété name = "defaultocumit" value = "false" /> <<propriété = " Value = "$ {timebetweenvictionrunsmillis.jclt}" /> <propriété name = "minevictableidlememillis" value = "$ {minevictableidletimemillis.jclt}" /> </ank> <bean id = "dataSource"> <propriété name = "TargetDatasources"> <map key-Type = "java.lang. key = "jksh" value-ref = "jksh" /> <entrée key = "jclt" value-ref = "jclt" /> </ map> </ propriété> <propriété name = "defaultTargetDataSource" ref = "jksh" /> </ beeb> 4. Code: méthode principale
import javax.sql.datasource; import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationcontext; import org.springframework.core.io.RilesystemResource; import org.springframework.core.io.Resource; com.jclt.service.commons.dbContexTholder; import com.jclt.service.model.user; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlsessionfactory; import org.mybatis.spring.sqlssionfactoryban; @param args * / public static void main (string [] args) {applicationContext appContext = new ClassPathXmlApplicationContex AppContext.getBean ("DataSource"); SqlSessionFactoryBean Bean = new SqlSessionFactoryBean (); Bean.SetDataSource (DataSource); Resource Resource = New FileSystemResource (Res); Bean.SetConfigLocation (Resource); Try {SqlSessionFactory SessionFactory = Bean.Ge session = sessionfactory.opencession (); utilisateur utilisateur = session.selectone ("com.jclt.service.dao.readjksh.findone"); System.out.println (user.getName ());} catch (exception e) {e.printStackTrace (");} dbContextholder.SetDBTYPE (" jksh "); res1 = "src / main / ressources / ibatis-config.xml"; dataSource dataSource1 = (dataSource) AppContex FileSystemResource (res1); bean1.setConfigLocation (Resource1); try {SqlSessionFactory SessionFactory = bean.getObject (); SqlSession Session = SessionFactory.Opensession (); utilisateur; user = session.selectone ("com.jclt.service.dao.readjksh.findone"); system.out.println (user.getName ());} catch (exception e) {e.printStackTrace ();}}}Ce qui précède est la combinaison de Spring et MyBatis pour implémenter la fonction de commutation source multi-données que l'éditeur vous a présenté. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!