Terkadang beberapa database terhubung dalam suatu proyek, dan beberapa sumber data perlu dikonfigurasi di musim semi. Saya mengalami masalah ini baru -baru ini. Karena proyek saya didasarkan pada DAO umum sebelumnya, ada masalah konstan selama konfigurasi, dan metode ini bertentangan dengan file sumber daya. Jika Anda memindai file pemetaan, nama kacang dari SQLSessionFactory harus SQLSessionFactory. Itu tidak dapat membaca SQLSessionFactory2 atau nama lain. Solusi terakhir adalah sebagai berikut:
1. Tambahkan kelas berikut MultipledataSource.java ke proyek
paket com.etoak.util; impor org.springframework.jdbc.datasource.lookup.abstractroutingDataSource; Kelas Publik MultipledataSource memperluas abstractroutingDataSource {private static final threadlocal <string> dataSourcekey = new wteroverableThreadlocal <string> (); public static void setDataSourCekey (String DataSource) {DataSourCey.set (DataSource); } @Override Protected Object DittrectCurrentLookUpkey () {// TODO Metode yang dihasilkan secara otomatis Stub return DataSourCekey.get (); }} File konfigurasi pegas adalah sebagai berikut:
<beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: p = "http:org.org.org.org xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: xsi = "http://www.w3.org/2001/xmlsmema-instance" xsi: schemalocation = "httt: httpor http://www.springframework.org/schema/beans/spring-weans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd "> <konteks: komponen-scan base-package =" com "/> <mvc: anotasi-didorong/> <konteks:" clelas " p: driverclassName = "$ {mysql.driver}" p: url = "$ {mysql.url}" p: username = "$ {mysql.username}" p: kata sandi = "$ {mysql.password}"/<bean id = "ds2" p: driver = "dsriver =" {{{{{ds2 "p:" dsql p: url = "$ {mysql2.url}" p: userName = "$ {mysql2.username}" p: kata sandi = "$ {mysql2.password}"/> <bean id = "MultipledataSource"> <Property name = "DefaultargetgetDataSource" REF = "deP =" deP = "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" nOnODSOURCE "DEFAULT (DEFAULT (DEFAULT (DEFAULTUR" key = "ds1" value-ref = "ds1"/> <entry key = "ds2" value-ref = "ds2"/> </pap> </prupt> </tact> <bean id = "sqlSessionfactory1" p: datasource = "multipledataSource" p: mapperlocory1 "p: classpath. <ean> <bean> <name properti = "basepackage" value = "com.etoak.dao"/> <name properti = "markerInterface" value = "com.etoak.dao.basedao"/> </bean> </bean> Kelas tes adalah sebagai berikut:
paket com.etoak.test; impor org.springframework.context.applicationContext; impor org.springframework.context.support.filesystemxmlapplicationContext; impor com.etoak.dao.productdaoif; impor com.etoak.util.multipledataSource; tes kelas publik {public static void main (string [] args) {applicationContext ac = new FilesyStemXMlappLicationContext ("WebContent/web-inf/etoak-servlet.xml"); Productdaoif prodao = (ProductDaoif) ac.getbean (Productdaoif.class); MultipleDataSource.SetDataSourcey ("DS1"); int count1 = prodao.selectproductcount (); MultipleDataSource.setDataSourcey ("ds2"); int count2 = prodao.selectproductcount (); System.out.println (Count1); System.out.println (Count2); }}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.