Integrasi dengan Spring3
Sebagai kerangka dasar, Spring dapat mengintegrasikan kerangka kerja back-end seperti Hibernate, Mybatis, dll.
Artikel sebelumnya memperkenalkan penggunaan mybatis saja, dan logika umum adalah:
SQLSessionFactory <- File Konfigurasi (termasuk konfigurasi koneksi database)
Ixxxmapper <- SQLSession <- SQLSessionFactory
<- Mapper Interface <- Mapper XML
Setelah mendapatkan ixxmapper, Anda dapat memanggil metode untuk interaksi data.
Saat berintegrasi dengan musim semi, objek di atas perlu dikelola sebagai kacang:
DataSource Bean <- Konfigurasi Koneksi Database
SQLSessionFactory Bean <- DataSource
<- File Konfigurasi
Usermapper Bean <- SqlSessionFactory
<- antarmuka mapper
1. Tambahkan dependensi di pom.xml:
<Properties> <mybatis.spring.version> 1.2.1 </mybatis.spring.version> <dbcp.version> 1.4 </dbcp.version> <spring.version> 3.1.2.release </spring.version> </properties> <Dependencies> <pendendency> </some-worped dari my wirpeds> </properties> <dependency> <Dependency> <! <groupId> org.mybatis </groupid> <ArTifactId> mybatis-spring </artifactid> <version> $ {mybatis.spring.version} </version> </dependency> <groupdency> <!-Konteks Spring menggunakan Spring-JDBC untuk terhubung ke basis data-Groupid> org. <ArTifactId> spring-jdbc </stifactid> <version> $ {spring.version} </version> </dependency> <dependency> <!-DataSource adalah instance dari BASICDataSource-> <Roupid> commons-dbcp </groupid> <ArTifactId> Commons-dbcp </ArtiCid </Dependency> <dependency> <GroupId> org.springframework </groupId> <ArTifactId> spring-test </stifactid> <version> $ {spring.version} </version> </dependency> </dependensi> 2. Buat file kacang-da.xml di bawah classpath:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-eans.xsd"> <bean id = "dataSource"> <!-Database.xsd "> <bean id =" dataSource "> <!-database.xsd"> <bean id = "dataSource"> <!-database.xsd "> <bean id =" dataSource "> <!-database value = "com.mysql.jdbc.driver" /> <name properti = "url" value = "jdbc: mysql: // localhost: 3306 /hbatis? karakterEncoding = utf8" /> <nama properti = "username" = "root" /<nama properti = "nilai" value = "123 ID = "SQLSessionFactory"> <!-SQLSessionFactory bean-> <properti name = "DataSource" ref = "DataSource" /> <!-Sumber data-> <nama properti = "configlocation" value-"classpath: configuration.xml" /> <!-file konfigurasi-> < /bean> <cladpath: configuration.xml " /> <!-File konfigurasi-> < /bean> Bean> Bean =" USML " /> <!-File Konfigurasi-> < /bean> Bean> Bean =" USML " /> <! name = "sqlSessionFactory" ref = "sqlSessionFactory" /> <properti name = "mapperInterface" value = "com.john.hbatis.mapper.iuserMapper" /> <!-Mapping Interface-> < /beans>
3. Kelas Tes:
@ContextConfiguration (Lokasi = {"ClassPath: Beans-da.xml"}) Kelas Publik SpringIntegrationTest memperluas AbstractTestNgSpringContextTests {private static final Logger Log = loggerFactory.getLogger (springIntegrationTest.class); @Resource iusermapper mapper; @Test public void queryTest () {user user = mappper.getUserbyId (1); log.info ("name: {}, alamat: {}", user.getName (), user.getAddress ()); }} Integrasi dengan springmvc
Di sini kami membangun integrasi dengan Spring3:
1. Tambahkan Dependensi SpringMVC dan Freemarker ke Pom.xml:
<Properties> <freemarker.version> 2.3.19 </freeMarker.version> <servlet.version> 2.5 </servlet.version> </properties> <dependency> <groupid> org.freemarker </groupid> <ArtifacTid> freeMarker </Artifactid> </groupid> <artifactid> freeMarker </arttifactid> </groupid> <artifactid> freeMarker </arttifactid> <proversion> $ {version {versi {version> freeMarker </Artifactid> $ {version> <groupId> javax.servlet </groupId> <ArTifactId> servlet-api </stifactid> <version> $ {servlet.version} </version> <seCope> disediakan </scope> </dependency>2. Tambahkan pendengar Spring dan Servlet SpringMVC di Web.xml:
<listener> <listener-class> org.springframework.web.context.contextLoaderListener </listener-class> <!-dengarkan acara kontainer, inisialisasi dan tutup konteks aplikasi web dan hubungi kontekscleanuplisten untuk membersihkan sumber daya-> </listener> <listener> <listener-class> org.springframework.web.context.contextcleanuplistener </engeaner-class> <!-Bersihkan sumber daya yang dapat dirusak dalam servletcontext ketika aplikasi web ditutup-> </listener> <servlet> <servlet-name> hbatis </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <!-<inin-param> <param-name> ContextConfigLocation </parpen-noMl </value formc foro! $ {Project.name} -servlet.xml di direktori web-inf-> <boad-on-tartup> 1 </boad-on-tartup> </servlet> <servlet-Mapping> <servlet-name> hbatis </servlet-name> <rerl-pattern>*.3. Buat yang baru di bawah Web-Inf:
File Konfigurasi Spring ApplicationContext.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: p = "http://www.spramework.org/schema/spema/spema" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/context" xsi: schemalocation = "http:schema http://www.springframework.org/schema/beans/spring-teans.xsd http://www.spramework.org/schema/context http:/www.springframework.org/schema/context location = "classpath: /database.properties" /> <!-File konfigurasi database-> <bean id = "DataSource" p: driverclassname = "$ {driverclassName}" p: url = "$ {url}" p: username = "$ {User_Name}" P: P: URL} "p: UserName =" $ {User_Name} "P: P: URL}" p: UserName = "$ {User_Name}" P: P: P: P: P: "P:" $ "{UserName =" $ {User_Name "" <bean id = "sqlSessionFactory"> <!-objek sqlSessionFactory-> <name properti = "DataSource" ref = "DataSource" /> <!-Sumber data-> <nama properti = "configlocation" value = "classpath: configuration.xml" /<!-file configuration mybatis-"classpath:" mapperl " /<! value = "classpath*: com/John/hbatis/model/*. xml"/>-> <!-Anda dapat mengonfigurasi file pemetaan di configuration.xml atau di sini, tetapi Anda tidak dapat memiliki parameterMap, hasil hasil, sql, dll. dengan ID yang sama-> </bean> <bean id = "mapperconfigururer" name = "BasePackage" value = "com.john.hbatis.mapper"/> </ bean> </beans>database.properties di bawah classpath:
driverclassname = com.mysql.jdbc.driver url = jdbc: mysql: // localhost: 3306/mybatis? karakterencoding = utf8 user_name = root password = 123456
Catatan: Karena MappersCannerConfigurer dapat menyebabkan nama pengguna mengambil akun pengguna, menyebabkan koneksi database gagal, sehingga diubah menjadi nilai lain: user_name.
File Konfigurasi SpringMVC hbatis-servlet.xml:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:BaMaM.MFC" xsi: schemalocation = "http:B http://www.springframework.org/schema/beans/spring-leans.xsd http://www.springframework.org/schema/context http://www.spramework.org/schema/context/spring.spramework.org/schema/context http://www.springframework.org/schema/mvc http://www.spramework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd RequestMappingHandlermapping, RequestMappingHandlerapter dan ExceptionHandLerExceptionResolver untuk memberikan dukungan untuk anotasi seperti @RequestMapping, @ExceptionHandler, dll-Konteks: Komponen-pemindaian basis-package = "com.john.hbatis.controller" /<! <! FreeMarker view processor--> <bean id="viewResolverFtl"> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/> <property name="contentType" value="text/html;charset=utf-8"/> <property name="prefix" value="" /> <property name = "cache" value = "false"/> <properti name = "viewNames"> <rray> <value>*. ftl </value> </r array> </pruptent> <!-<name properti = "suffix" value = ". ftl"/-> <nama properti = "order" value = "0"/> <!-prioritas, nilai prioritas, prioritas prioritas = "0" id = "freeMarkerconfig"> <name properti = "TemplatEloaderPaths"> <cist> <value>/web-inf/ftl/</value> <!-Template loading path-> </list> </propert> </bean> </bean>
4. MVC:
Lapisan Kontrol: Usercontroller.java
@Controller @RequestMapping ("/artikel") kelas publik usercontroller {@autowired iusermapper mapper; @RequestMapping ("/list") Public String showAll (modelmap modelmap) {List <carticle> artikel = mappper.getArticleSeSerId (1); modelmap.addattribute ("artikel", artikel); mengembalikan "main.ftl"; }}Lihat Lapisan: Main.ftl:
<#list artikel sebagai artikel> <div> $ {artikel.id}. $ {artikel.title}: $ {artikel.content} </div> </#list>5. Mulai proyek, dan masukkan browser: http: // localhost: 8080/hbatis/artikel/daftar.htm untuk melihat hasilnya.