SSM (Spring+SpringMVC+MyBatis), saat ini solusi arsitektur tingkat perusahaan yang relatif utama. Model desain MVC standar membagi seluruh sistem menjadi empat lapisan: lapisan tampilan, lapisan pengontrol, lapisan layanan, dan lapisan DAO. SpringMVC digunakan untuk bertanggung jawab untuk penerusan permintaan dan melihat manajemen, Spring mengimplementasikan manajemen objek bisnis, dan mybatis digunakan sebagai mesin persistensi objek data.
1. Detail bingkai
Spring adalah kerangka kerja pengembangan Java yang ringan yang dibuat untuk menyelesaikan kompleksitas pengembangan aplikasi perusahaan. Tujuan Spring tidak terbatas pada pengembangan sisi server. Dari perspektif kesederhanaan, testabilitas, dan kopling longgar, aplikasi Java apa pun dapat memperoleh manfaat dari musim semi. Sederhananya, Spring adalah kerangka kerja kontainer inversi ringan (IOC) dan berorientasi singgung (AOP)
SpringMVC adalah produk selanjutnya dari Springframework, memisahkan peran pengontrol, objek model, operator dan objek penangan. Pemisahan ini membuat mereka lebih mudah disesuaikan.
Mybatis adalah kerangka kerja kegiatan kegigihan berbasis Java. MyBatis menyediakan kerangka kerja lapisan persistensi termasuk peta SQL dan objek akses data (DAO) yang menghilangkan pengaturan manual dari hampir semua kode dan parameter JDBC dan pengambilan set hasil. MyBatis Maps Interfaces dan Java untuk merekam dalam database menggunakan XML sederhana atau anotasi untuk konfigurasi dan pemetaan mentah
2. Buat proyek Maven
1. Buat proyek menggunakan Maven di Eclipse
2. Tekan default berikutnya
3. Setelah menemukan Maven-Archetype-Webapp, klik Next
4. Isi informasi yang sesuai. GroupID adalah pengidentifikasi unik dari organisasi proyek, yang sebenarnya sesuai dengan struktur paket Java. Artifactid adalah pengidentifikasi unik dari proyek ini. Nama proyek yang sesuai adalah nama Direktori Root Proyek. Setelah mengisi paket, Anda dapat membuat paket untuk Anda secara default, dan tidak apa -apa untuk tidak menulisnya.
5. Direktori yang baru dibangun adalah sebagai berikut
6. Maven menetapkan bahwa folder sumber berikut harus ditambahkan:
SRC/Main/Resources
SRC/Main/Java
SRC/tes/sumber daya
SRC/TEST/JAVA
Sebelum langkah ini, yang terbaik untuk mengklik kanan proyek dan memilih Properties, lalu klik Java Build Path, di bawah Perpustakaan, edit Pustaka Sistem JRE, dan pilih Workspace Default JRE.
7. Ubah jalur output secara terpisah, dan hubungan yang sesuai adalah sebagai berikut:
8. Konversi proyek menjadi proyek web dinamis, klik kanan properti pada proyek, dan pilih aspek proyek di sebelah kiri.
9. Atur jalur penerbitan file selama penyebaran dan hapus dua item tes, karena tes digunakan untuk pengujian dan tidak memerlukan penyebaran.
Pengaturan menerbitkan paket jar maven ke lib. Tambahkan -> Java Build Path Entries -> Maven Dependencies -> Finish
3. Maven memperkenalkan paket JAR yang diperlukan
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/maven.romp.romp.romp. http://maven.apache.org/maven-v4_0_0.xsd "> <podelversion> 4.0.0 </podelversion> <groupid> com.yingjun.test </groupid> <ArTifactid> TradingState </artifactid> <packaging> War </Version </Version> </Artifactid> <packaging> War </Version </Version> </Artifactid> <packaging> war </Version </Version> </ArtiFacTid> <packaging> War </Version </Versies> </ArtiFacTid> <packaging> War </Version> Versies 2.0.0.0 <Project.build.sourceencoding> utf-8 </project.build.sourceencoding> <maven.build.timestamp.format> yyyymmddhhmmss </maven.build.timestamp.format> <spring.version> 3.2.9.release </spersion> <mybatis.version>3.1.1</mybatis.version> <mybatisspring.version>1.1.1</mybatisspring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </Dependency> <dependency> <GroupId> org.springframework </groupid> <ArTifactId> Spring-WEBMVC </artifactId> <version> $ {spring.version} </version> </dependency> <grouptid> org.springframework </version> </artifactid> <groupid> org. <version> $ {spring.version} </version> </dependency> <dependency> <GroupId> org.mybatis </groupid> <ArTifactId> mybatis </artifactid> <version> $ {mybatis.version} </version> </dependency> <version> <groupid> <artifactId>mybatis-spring</artifactId> <version>${mybatisspring.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency> <dependency> <groupid> junit </groupid> <ArTifactId> junit </artifactid> <version> 4.11 </version> <scope> tes </seupope> </gandendency> <dependency> <groupid> C3P0 </groupid> <ArTifactId> C3P0 </ArtifactId> <version> 0.9.1.2 </Versi> C3P0 </ArtifactId> <versi> 0.9.1.2 </Versi> C3P0 </ArtifactId </Versi> 0.9.1.19.2 </Versi> </Versi </Versi> </Versi </Versi> </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi.19.1. <GroupId> org.aspectj </groupId> <ArTifactId> aspekJweaver </t ArtifactId> <version> 1.8.1 </version> </dependency> <dependency> <groupid> javax.servlet </groupid> <ArTifactId> JSTL </ArtifactId> </Versi 1.2 </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> <GroupId> javax.servlet </groupid> <ArTifactId> servlet-api </stifactid> <version> 3.0 </version> <scope> disediakan </seupope> </dependency> <sependency> <scoulpid> </scopop.2 versi </groupid> <ArTtifactid> JAVAX.SERVLET.JSP </groupid> <ArTtifacTID> JSP-API </ARTOPID.2 </Dependency> <dependency> <GroupId> Commons-Fileupload </groupid> <ArTifactId> Commons-Fileupload </arttifactid> <version> 1.3.1 </version> </dependency> </Dependency> <TRIPRIPID> </GroupId> <ArTifactid> Commons Lang Commons </Artifactid> </Groupid> <TifactId> Commons Lang Commons </Artifactid> Common <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5</version> </dependency> <dependency> <GroupId> org.slf4j </groupid> <ArTifactId> slf4j-api </stifactid> <version> 1.7.10 </version> </dependency> <dependency> <groupid> org.slf4j </groupid> <ArtifactId> Slf4j-log4j12 </artifactid </groupid> <Artifactid> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> </dependencies> <build> <plugins> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration> <version>3.0</version> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> <FinalName> $ {Project.ARTIFACTID} _ $ {Project.Version} _ $ {maven.build.timestamp} </finalname> </build> </poject>4. File konfigurasi terkait dan integrasi kerangka kerja SSM
Web.xml
<? Xml Version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xmlns =" http://java.com/xmlns = "http:/java.com/xmlns = xmlns: web = "http://xmlns.jcp.org/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/j2ee http://java.sun.com/xml Versi = "2.4"> <!-Mengkonfigurasi spring-> <context-param> <param-name> ContextConfigLocation </param-name> <param-value> classpath: spring.xml </param-value> </context-param> <listener> <listener-class> org.springframework.weB.context> <leenge listener> <listener-class> org.springframework.web.context> <!-Cegah pendengar overflow memori musim semi-> <sengendens> <Distener-Class> org.springframework.web.util.introspectorcleanupristener </engeaner-class> </engeaner> <!-Cegah pendengar meluap memori musim semi-> <listener> <listener-class> org.springframework.web.util.intospectorcleanuplistener </engeaner-class> </engeaner> <!-Mengkonfigurasi springmvc-> <servlet> <servlet-name> </servlet-name> <servlet-class> org.springframwork.wispats.disper. <Ilin-param> <param-name> ContextConfigLocation </param-name> <param-value> classpath: spring-mvc.xml </param-value> </init-param> <boad-on-startup> 1 </load-on-startup> </servlet> <servlet-mappaping> <servlet-name> </pound-noather> </servlet> <rver-papping> <rver-name> </servleter> <rver-paply-n-name> <rovle-name> <riglod-name> <rovle-name> <rovle-name> <rovle-name> <rovle-name> <rovle-name> </servlet-Mapping> <!-Karakter Set Filter-> <nilter> <filter-name> encodingFilter </filter-name> <nilter-class> org.springframework.web.filter.characterencodingFilter </filter-class> <in-param> <param-name> encoding </param-name> <param-Param> <in-param> <param-name> encoding </param-name> <init-param> <param-name> <Ilin-Param> <Param-name> ForceEncoding </param-name> <param-value> true </param-value> </init-param> </filter> <nilter-Mapping> <nilter-name> encodingFilter </filter-name> <rerl-pattern>/*</url-Pattern> </filter-mapping> </Web-patper>
Spring.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: mvc = "http://www.springframework.org/schema/mvc" xmlns: context = "http://www.springframework.org/schema/aop" xmlns: tx = "http:/schema/aop" xmlns: tx = "http:/schema/aop" xmlns: tx = "http:/schema" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/contxt http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springfringework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> <!-Layanan pemindaian, Komponen DAO-<konteks: komponen-scan-package =" com. jdbc.properites --> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- Data source c3p0 --> <bean id="dataSource"> <property name="driverClass" value="${jdbc.driverClassName}" /> <property name="jdbcUrl" value = "$ {jdbc.url}" /> <name properti = "user" value = "$ {jdbc.username}" /> <name properti = "kata sandi" value = "$ {jdbc.password}" /> <name property = "maxpoolsize" value = "$ {c3p0.pool.pool. value = "$ {c3p0.pool.size.min}" /> <name properti = "initialpoolsize" value = "$ {c3p0.pool.size.ini}" /> <name properti = "AcquireIncrement-value =" $ {c3p0.pool.size.size.Increment} " /> < /c3p0.pool <bean id = "sqlSessionFactory"> <properti name = "DataSource" ref = "DataSource"/> <name properti = "configLocation" value = "classpath: spring-mybatis.xml"/<name property = "mapperokations" = "clemtpath*: com/yingjun/uji/uji/mapper/mapper/* name = "BasePackage" value = "com, yingjun.test.dao" /> <name properti = "sqlSessionFactoryBeanName" value = "sqlsessionfactory" /> </ bean> <bean id = "transactionManager"> <nama properti = "datasource" refr = "DataSource" /"TRANSACT" < /TRIANTEP = "Datasource" REF = "DataSource" Transaction-Manager = "TransactionManager"> <tx: Atribut> <tx: Metode name = "add*" propagation = "wajib" /> <tx: nama metode = "append*" propagation = "wajib" /> <tx: "save =" masukkan*"propagasi =" wajib " /> <tx: nama metode =" "save*" save*"disyaratkan" propagation = "wajib" /> <tx: nama metode = "ubah*" propagasi = "diperlukan" /> <tx: nama metode = "edit*" propagasi = "diperlukan" /> <tx: nama metode = "hapus*" propagasi = "diperlukan" /> <tx: nama metode = "hapus*" propagasi = "diperlukan" name = "delandrepair" propagation = "wajib" /> <tx: Metode nama = "get*" propagasi = "dukungan" /> <tx: nama metode = "temukan*" propagasi = "dukungan" /> <tx: nama metode = "load*" propagasi = "dukungan" /<tx: Tx: "load*" load = "propagation =" dukungan " /<tx: Metode nama =" load*"=" propagation = "Dukungan" /<Tx: TX: Metode nama = "LOAD*" = "" "Tx" propagation = "mendukung" /> <tx: metode nama = "datagrid*" propagation = "mendukung" /> <tx: metode metode = "*" propagasi = "mendukung" /> </tx: atribut> </tx: nasihat> <aop: config> <aop: pointcut id = "transactioncutcut =" exexion = "excutation =" Execute = "(aOP: pointcut id =" transactioncutcut = "exexion =" excutation = "Excutation =" EXECUTION (AOP> <AOP: POINTCUT ID = "transactionCutcut =" com.yingjun.test.service ..*Impl.*(..)) " /> <aop: penasihat pointcut-ref =" transactionpointcut "saran-ref =" transactionadvice " /> </aop: config> </teans>Untuk mengganti kode manual penulisan objek akses data (DAO) menggunakan SQLSessiondaOsupport atau SQLSessionTemplate, mybatis-spring menyediakan implementasi proxy yang dinamis: MapperFactoryBean. Kelas ini memungkinkan Anda untuk secara langsung menyuntikkan antarmuka data mapper ke dalam kacang layer layanan Anda. Saat menggunakan Mappers, Anda hanya memanggil mereka seperti yang Anda lakukan dengan DAO Anda, tetapi Anda tidak perlu menulis kode implementasi DAO, karena mybatis-spring akan membuat proxy untuk Anda.
Spring-mybatis.xml
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype Configuration Public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <nander no!
Spring-mvc.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: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http:/schem.mp.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org.org. yang” ” XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring--3.0.xsd http:/wwww.spramework.orgemork.orgemork.orgemework/orgemork.orgemork.orgemork.orgemork.orgemork.orgework.orgemork.orgor.orger http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/schema/schema/sprammewewar Dukungan Pemetaan Anotasi Default-> <MVC: Annotation-Driven /> <!-Secara otomatis memindai paket, membuat SpringMVC berpikir bahwa kelas yang dianotasi oleh @Controller di bawah paket adalah pengontrol-> <konteks: component-scan-package = "com.yingjun.test.controller" /<! id = "MappingJackSonHttpMessageConverter"> <properti name = "SupportedMediatypes"> <cist> <value> Teks/html; charset = UTF-8 </ value> </list> </propix fixix> </bean prefigurasi <!-Tentukan pre-suffix dari file yang melompat, Mode View-> </bean> <! dari metode tindakan selanjutnya untuk menjadi alamat URL yang tersedia-> <name properti = "prefix" value = "/web-inf/jsp/"/> <properti name = "suffix" value = ". jsp"/> </ bean> <!-unggah file konfigurasi, jika Anda tidak menggunakan unggahan file, Anda tidak perlu mengkonfigurasinya. Tentu saja, jika Anda tidak cocok, maka tidak perlu memperkenalkan paket komponen unggahan dalam file konfigurasi-> <bean id = "multipartresolver"> <!-encoding default-> <nama properti = "DefaultEncoding" value = "UTF-8" /> <!-Nilai file maksimum-> <nama properti name = "MaxUpLoad" MAXUMIMLE ("MAXUMIMLIZE /> <! Memory -> <properti name = "maxInmemorySize" value = "40960"/> </t bean> </tobe> log4j.properties
jdbc.driverclassname = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: //192.168.1.194: 3306/test? UseUnicode = true & characterencoding = UTF-8 jdbc.usname. c3p0.pool.size.min = 5 c3p0.pool.size.ini = 3 c3p0.pool.size.increment = 2
jdbc.properties
LOG4J.ROOTLOGGER = info, konsol, debug, aplikasi, kesalahan ### konsol ### log4j.Appender.console = org.apache.log4j.consoleAppender LOG4J.Appender.console.target = System.out LOG4J.Appender.console.layout = orgache.apache.apache.apache.apoche. LOG4J.Appender.console.layout.conversionPattern = %d %p [ %c: %l]- %m %n ### debug ### log4j.Appender.debug = org.apache.log4j.dailyrollingfileAppender LOG4J.APPENDER.APACHE.ABUG.FILE = LOG/LOGPENDEG.ABAG.APPENDER.APPLEG.APPLEG.APPLEG.APPLEG.APPLEG.APPLEG.APPLEG.APPLEG.APPENDER.APPENDER.APPLEG.APPENDER.APPENDER.APPENDER.APPENDER.APPLEG.APPENDER LOG4J.Appender.debug.threshold = debug log4j.Appender.debug.datePattern = '.' yyyy-mm-dd log4j.Appender.debug.layout = org.apache.log4j.patternlayout log4j.applender.appling.debug.layout.apache.patterner = %power- %power = %loDon-conOut.layout.layout.layout.layout.conout.conOut.apon- % %power = %loDon-conOut.layout.layout.layout.conOut.apon %.perat = % %loDVIDEROUT %PERMORDER-%.PON-OFERPER.PONDOUG.CONOUD.APACHOL.POLOT.POLOT.PORDER- % ### App ### log4j.appender.app = org.apache.log4j.dailyrollingFileAppender LOG4J.Appender.app.file = log/app.log log4j.applender.append.append = true log4j.appender LOG4J.Appender.app.layout = org.apache.log4j.patternlayout log4j.Appender.app.layout.conversionPattern = %d %p [ %c: %l] - %m %n ### kesalahan #### LOG4J.Appender.Error = org.apache.log.dog.dog. LOG/ERROR.LOG LOG4J.APPENDER.Error.Append = True LOG4J.Appender.Error.threshold = error log4j.Appender.Error.DatePattern = '.' Yyyy-MM-DD LOG4J.Appender.Error.layout = org.apache.log4j.patternlayout Log4j.apper. %P [%c:%l] -%m%n
5. Gunakan Generator MyBatis untuk secara otomatis membuat kelas entitas, memetakan file dan antarmuka DAO
Mybatis termasuk dalam kerangka kerja ORM semi-otomatis, jadi tugas utamanya adalah mengkonfigurasi file pemetaan pemetaan. Namun, karena file pemetaan tulisan tangan rentan terhadap kesalahan, generator mybatis dapat digunakan untuk secara otomatis menghasilkan kelas entitas, antarmuka DAO dan file pemetaan pemetaan. Ini menghemat banyak upaya dan menyalin kode yang dihasilkan ke dalam proyek.
Hasilkan file dan stoples yang diperlukan untuk kode dan buat struktur direktori berikut:
Konfigurasikan koneksi database yang relevan di generatorl.xml, dan tabel database sudah tersedia:
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype GeneratorConfiguration Public "-// mybatis.org//dtd MyBatis Generator Configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-genercon>" cond- " <!-Driver Database-> <classpathentry location = "mysql-connector-java-5.1.34.jar" /> <context id = "db2tables" targetruntime = "mybatis3"> <commentsgenerator> <property name = "penekan value" value = "true" /<! Ada <!-apakah akan menghapus namanya secara otomatis = "penekan" value = "true" /<! Ada <! Apakah akan menghapus namanya secara otomatis = "noing fies:" true " /> <! Apakah akan menghapus namanya secara otomatis name = "SuppressAllComments" value = "true"/> </commentgenerator> <!-database tautan url, nama pengguna, kata sandi-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" connection = "jdbc: mysql: //192.168.1" "" "" "" "" "" "" </jdbcconnection> <javatyperesolver> <nama properti = "forcebigdecimals" value = "false"/> </javatyperesolver> <!-hasilkan nama paket dan lokasi model-> <javamodelgenerator targetPackage = "com.yingjun.test.model" target ("" com.yingjun.test.model "target (" "" com value = "true" /> <name properti = "trimstrings" value = "true" /> </javamodelgenerator> <!-Hasilkan nama paket dan lokasi file pemetaan-> <sqlmapgenerator targetPackage = "com.yingjun.test.mapping" targetProject = "src"> <nama properti = " </sqlMapGenerator> <!-- Generate the package name and location of the DAO--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.yingjun.test.dao" targetProject="src"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- The table to be generated is the table name Dalam database atau nama tampilan DomainObjectName adalah nama kelas entitas -> <tableName = "Other_list" domainObjectName = "OtherList" enableCountByExample = "fasle" enableupDateBebyexample = "false" enableDeLetEbelExample = "false" enablePelectByExample = "false" false "false =" false "false" false "false" false "false" false "false" false "false" false "false" false " </GeneratorConfiguration>Buka jendela CMD dan masukkan struktur direktori dan masukkan baris perintah:
java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite
Setelah menjalankan selesai, DAO Mapper dan model yang sesuai akan dihasilkan. Bukankah itu sangat bagus?
6. Tetapkan lapisan layanan dan lapisan pengontrol
paket com.yingjun.test.service; Antarmuka publik lainnyaViceI {string publik getoTerList (); } paket com.yingjun.test.service; impor java.util.arraylist; impor java.util.arrays; impor java.util.hashset; impor java.util.list; impor java.util.map; impor java.util.set; impor java.util.set; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.stereotype.service; impor com.alibaba.fastjson.json; impor com.alibaba.fastjson.serializer.serializerfeature; impor com.yingjun.test.dao.otherlistmapper; impor com.yingjun.test.model.otherlist; impor com.yingjun.test.model.otherlistDomain; @Service Public Class OtherServiceImpl mengimplementasikan Lainnya Lainnya {@Autowired Private OtherListMapper OtherListMapper; @Override public string getoTerList () {set <string> set = new HashSet <string> (); Daftar <OnterList> Daftar = OtherListMapper.SelectAll (); Daftar <OnterListDomain> jsonList = ArrayList baru <OnterListDomain> (); for (OtherList Other: list) {string title = Other.gettitle (); if (set.contains (title)) {lanjutan; } else {list <distlist> t_list = new ArrayList <OnterList> (); untuk (Data Lainnya: Daftar) {if (title.equals (data.gettitle ())) {t_list.add (data); }} Domain DistMomain lainnya = new lainnyaListDomain (); domain.settitle (judul); domain.setitems (t_list); jsonlist.add (domain); set.add (Other.gettitle ()); }} return json.tojsonstring (jsonlist, serializerfeature.writemapnullValue); }} paket com.yingjun.test.controller; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.stereotype.controller; impor org.springframework.web.bind.annotation.requestmapping; impor org.springframework.web.bind.annotation.responseBody; impor com.alibaba.fastjson.json; impor com.yingjun.test.service.otherservicei; impor com.yingjun.test.service.stockstatusservicei; @Controller @RequestMapping (value = "/") Public Class Tsscontroller {@Autowired Private OtherServiceIeService; @RequestMapping (value = "/getotherlist", menghasilkan = "text/html; charset = utf-8") @ResponseBody Private String getotherList () {string json = OtherService.getoterList (); mengembalikan json; }} 7. Buat kelas tes
impor java.util.list; impor org.apache.log4j.logmanager; impor org.apache.log4j.logger; impor org.junit.test; impor org.junit.runner.runwith; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.test.context.contextConfiguration; impor org.springframework.test.context.junit4.springjunit4classrunner; @Runwith (springjunit4classrunner.class) @contextConfiguration (lokasi = {"classpath: spring.xml"}) kelas publik testmybatis {@Autowired private lain layanan lainnya; @Test public void test () {string list = service.getoTerList (); logger.info (daftar); }}8. Verifikasi melalui browser
http: // localhost: 8080/tzyjstateService/getotherlist
Pada titik ini, tes ini berhasil dan integrasi dari tiga kerangka kerja SSM utama selesai. Jika Anda memiliki kebutuhan lain, Anda dapat terus menambahkannya atas dasar ini.
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.