บทความนี้จะแนะนำโครงการ Java ขั้นพื้นฐานที่สุดให้กับโครงการเว็บเพื่อรวม Spring, SpringMVC, SpringDatajpa+Hibernate
โดยปกติเราอาจสร้างโครงการผ่านเทมเพลตหรือนำเข้าโครงการโดยตรง อย่างไรก็ตามบทความนี้เลือกที่จะเริ่มต้นด้วยโครงการ Java ขั้นพื้นฐานที่สุดโดยมีวัตถุประสงค์เพื่อแสดงหลักการมากขึ้น
แน่นอนว่าเรายังคงเริ่มต้นด้วยโครงการ Maven ขั้นพื้นฐานที่สุด ในความเป็นจริงกระบวนการก่อสร้างของโครงการที่ไม่ใช่ Maven ทั่วไปเกือบจะเหมือนกัน แพ็คเกจ JAR จะต้องเพิ่มด้วยตนเองในโครงการในขณะที่โครงการ Maven เพิ่งเปลี่ยนไฟล์การกำหนดค่า
ต่อไปนี้เริ่มต้นขึ้นอย่างเป็นทางการ
1. สร้างโครงการ Java ขั้นพื้นฐานที่สุดตาม Maven (หากคุณไม่ได้ใช้ Maven คุณสามารถใช้โครงการดั้งเดิมได้)
หากต้องการสร้างโครงการใหม่ให้เลือกโครงการ Maven ถัดไป:
ตรวจสอบว่าเป็นสร้างโครงการง่าย ๆ ถัดไป:
ID กลุ่มเป็นลำดับผกผันของชื่อโดเมนของคุณซึ่งมักจะสอดคล้องกับชื่อแพ็คเกจของซอร์สโค้ดโครงการ ARTIFACT ID เป็นชื่อเดียวของโครงการใน ID กลุ่มนี้ มันสามารถเติมเต็มได้ในทางใดทางหนึ่งตามงานอดิเรกของคุณแล้วจบ:
นี่คือผลลัพธ์ของโครงสร้างไดเรกทอรีโครงการเช่นนี้:
pom.xml เป็นไฟล์หลักของ Maven
2. ตั้งค่าโครงการเป็นโหมดเว็บแบบไดนามิก
ถัดไปแปลงโครงการเป็นโครงการเว็บคลิกขวาเพื่อเปิดคุณสมบัติของโครงการดังแสดงในรูปคลิกที่ด้านโครงการในเมนูทางด้านซ้ายจากนั้นคลิกแปลงเป็น faceted จาก ... ::
ทางด้านขวาเราทำเครื่องหมายโมดูลเว็บแบบไดนามิกแล้วคลิกตกลง:
ในเวลานี้ไดเรกทอรีเว็บเนื้อหาเพิ่มเติมจะปรากฏขึ้น:
ในไดเรกทอรี Web-Inf เพิ่มไฟล์ 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/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "version =" 3.0 "> <presshon-name> springdatajpa </display-name> <welcome-file-list>
จากนั้นเพิ่มหน้าต้อนรับ index.html:
<Html> <head> </head> <body> <h1> สวัสดีคำ! </h1> </body> </html>
โครงสร้างไดเรกทอรีมีดังนี้:
ในเวลานี้คุณสามารถคลิกขวาที่โครงการและทำงานบนเซิร์ฟเวอร์ คุณสามารถเห็นผลกระทบ:
3. รวม Spring+SpringMVC
สร้างแพ็คเกจใหม่และเพิ่มอินเทอร์เฟซและคลาส (รหัสเฉพาะจะแสดงในภายหลัง) โครงสร้างแพ็คเกจดังแสดงในรูป:
หากคุณต้องการเพิ่มแพ็คเกจ JAR เพียงแก้ไขไฟล์ POM โดยตรง หากเป็นโครงการปกติเพียงเพิ่มลงในโครงการโดยกดแพ็คเกจ JAR ใน pom.xml
ก่อนอื่นให้เพิ่มเวอร์ชันสปริงที่ใช้เพื่ออำนวยความสะดวกในการจัดการแบบครบวงจรจากนั้นเพิ่มแพ็คเกจ JAR ที่จำเป็นทั้งหมด ต่อไปนี้คือการเพิ่มแพ็คเกจขวดทั้งหมดที่จำเป็นที่นี่ pom.xml ที่เสร็จสมบูรณ์มีดังนี้:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/MANCMMMMMMMMMMMMMMMMMMMMMMMMMMBM http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modersion> 4.0.0 </modelversion> <moderversion> <moderversion> <spring.version> 4.2.5.release </spring.version> </premerties> <การพึ่งพา> <!-แพ็คเกจสปริงหลัก-> <การพึ่งพา> <roupId> org.springframework </groupid> <roupId> org.springframework </groupId> <ratifactid> Spring-Web </artifactid> <version> $ {Spring.version} </version> </predency> <การพึ่งพา> <roupid> org.springframework </GroupId> <การพึ่งพา> <roupId> org.springframework </groupId> <ratifactId> Spring-Tx </artifactid> <sersion> $ {Spring.version} </version> </การพึ่งพาอาศัย> <predency> <ratrid> org.springframework </groupid> </sderctency> <การพึ่งพา> <roupId> org.springframework </groupId> <ratifactId> Spring-Webmvc </artifactid> <person> $ {Spring.version} </เวอร์ชัน> <cerson> $ {spring.version} </version> </การพึ่งพา> <การพึ่งพา> <loupId> org.springframework </groupId> <ratifactid> Spring-context-support </artifactid> <persion> $ {Spring.ersion} </เวอร์ชัน> <ArtIfactId> การทดสอบฤดูใบไม้ผลิ </artifactId> <persion> $ {Spring.version} </เวอร์ชัน> </การพึ่งพา> <การพึ่งพาอาศัย> <roupId> org.springframework </groupId> <ratifactid> Spring-orm </artifactid> <version> $ {สปริง <RoupID> org.springframework.data </groupId> <ratifactid> Spring-Data-JPA </artifactId> <version> 1.10.1.release </เวอร์ชัน>เพิ่มไฟล์การกำหนดค่าสปริง ApplicationContext.xml ในไดเรกทอรี web-inf และเพิ่มเนื้อหาต่อไปนี้:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: p = "http:/www. xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: mvc = "http://www.springframework.org/schema/MVC http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/aop http://ww.springframework http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd "> <! เปิดการสแกนคำอธิบายประกอบ MVC-> <MVC: คำอธิบายประกอบที่ขับเคลื่อนด้วย /> </ebeans>
แก้ไข web.xml และเพิ่มสปริงเป็น:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_3_3 <pramplay-name> springdatajpa </display-name> <sistener> <sistener-lass> org.springframework.web.context.contextloaderListener </listener-class> </listener> </context-param> <servlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <init-param> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> SpringMvc </servlet-name> <url-pattern>/*</url-pattern> </welcome-file-list> </eb-app>
มาเริ่มเขียนรหัสด้านล่างระวังอย่าลืมเขียนคำอธิบายประกอบลำดับชั้นของแพ็คเกจได้รับในตอนต้นของส่วนนี้
ผู้ใช้เอนทิตี:
แพ็คเกจ com.anxpp.demo.core.entity; ผู้ใช้ระดับสาธารณะ {ID จำนวนเต็มส่วนตัว; ชื่อสตริงส่วนตัว; ผู้ใช้สาธารณะ (ID จำนวนเต็ม, ชื่อสตริง) {this.id = id; this.name = ชื่อ; } จำนวนเต็มสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (ID จำนวนเต็ม) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } @Override สตริงสาธารณะ toString () {return "id:"+id+", ชื่อ:"+ชื่อ; -อินเทอร์เฟซเลเยอร์ UserDao:
แพ็คเกจ com.anxpp.demo.core.dao; นำเข้า com.anxpp.demo.core.entity.user; อินเตอร์เฟสสาธารณะ userdao {ผู้ใช้ getuser (จำนวนเต็ม, ชื่อสตริง);}เลเยอร์ DAO ใช้ UserDaoImpl:
Package com.anxpp.demo.core.dao.impl; นำเข้า org.springframework.stereotype.repository; นำเข้า com.anxpp.demo.core.dao.userdao; นำเข้า com.anxpp.demo.core.entity GetUser (ID จำนวนเต็ม, ชื่อสตริง) {ส่งคืนผู้ใช้ใหม่ (ID, ชื่อ); -ผู้ใช้บริการเลเยอร์บริการ: ผู้ใช้บริการ:
แพ็คเกจ com.anxpp.demo.core.service; นำเข้า com.anxpp.demo.core.entity.user; อินเตอร์เฟสสาธารณะผู้ใช้บริการ {ผู้ใช้ getuser (จำนวนเต็ม, ชื่อสตริง);}การใช้เลเยอร์บริการ:
แพ็คเกจ com.anxpp.demo.core.service.impl; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.stereotype.service; นำเข้า com.anxpp.demo.core.dao.serdao; com.anxpp.demo.core.service.userService; @ServicePublic คลาส UserserViceImpl ใช้ Userservice {@AutoWired UserDao UserDao; @Override ผู้ใช้สาธารณะ getUser (ID จำนวนเต็ม, ชื่อสตริง) {return userdao.getUser (id, ชื่อ); -Democontroller เลเยอร์คอนโทรลเลอร์:
แพ็คเกจ com.anxpp.demo.controller; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.stereotype.controller; นำเข้า org.springframework.web.bind.annotation.requestmapping; org.springframework.web.bind.annotation.responsebody; นำเข้า com.anxpp.demo.core.service.userservice;@controller@requestmapping ("/") Democontroller ระดับสาธารณะ @RequestMapping ("/") @ResponseBody Public String INDEX () {return "index"; } @RequestMapping ("/getUser") @ResponseBody สตริงสาธารณะ GetUser (ID จำนวนเต็ม, ชื่อสตริง) {return userservice.getUser (id, ชื่อ) .toString (); -สิ่งนี้เป็นไปไม่ได้ที่จะทำงานบนเซิร์ฟเวอร์โดยตรงเนื่องจากแพ็คเกจ JAR จะไม่ถูกปล่อยออกมาด้วยกันเราจำเป็นต้องกำหนดค่าต่อไปนี้:
คลิกขวาที่โครงการเพื่อเลือกคุณสมบัติและกำหนดค่าตามรูปด้านล่าง:
ในเวลานี้คุณสามารถเรียกใช้การทดสอบเอฟเฟกต์มีดังนี้:
ณ จุดนี้เรายังไม่ได้ดำเนินการฐานข้อมูล
4. เพิ่มและส่งคืนการสนับสนุนข้อมูลรูปแบบ JSON
ตอนนี้เรามักจะใช้ JSON เป็นรูปแบบการส่งข้อมูล มาเพิ่มการสนับสนุนสำหรับการส่งคืน JSON สำหรับ SpringMVC
ก่อนอื่นเพิ่มแพ็คเกจ JAR:
<Ependency> <sderctId> com.fasterxml.jackson.core </groupId> <ratifactid> Jackson-Databind </artifactid> <persion> 2.5.0 </side> </sderction> <predency> <sdependency> </sderctency> <predency> <roupId> com.fasterxml.jackson.core </groupId> <ratifactid> แจ็คสัน-Annotations </artifactid> <version> 2.5.0 </version> </derness>
จากนั้นเขียนวิธี getUser () ใหม่ดังนี้:
@RequestMapping ("/getUser") @ResponseBody แผนที่สาธารณะ <String, Object> getUser (ID จำนวนเต็ม, ชื่อสตริง) {แผนที่ <สตริง, Object> MAP = ใหม่ HashMap <String, Object> (); map.put ("state", "ความสำเร็จ"); map.put ("data", userservice.getuser (id, ชื่อ)); แผนที่กลับ; -หลังจากรันใหม่เอฟเฟกต์การเข้าถึงมีดังนี้:
ในเวลานี้คุณสามารถส่งคืนข้อมูล JSON
5. กำหนดค่าการเข้าถึงทรัพยากรแบบคงที่
โดยทั่วไปแล้วเราไม่สามารถเข้าถึงทรัพยากรในไดเรกทอรี Web-Inf ได้โดยตรง หากเว็บไซต์ของเราประกอบด้วย HTML+AJAX คุณสามารถสร้างไดเรกทอรี HTML ใหม่นอก Web-Inf และกำหนดค่าตัวกรองเริ่มต้นสำหรับ web.xml อย่างไรก็ตามระวังที่จะวางไว้ก่อนตัวกรอง SpringMVC:
<servlet-mapping> <servlet-name> ค่าเริ่มต้น </servlet-name> <url-pattern>*. html </url-pattern> </servlet-mapping>
หากคุณต้องเข้าถึงทรัพยากรในไดเรกทอรี Web-Inf โดยการตรวจสอบเอกสารอย่างเป็นทางการของ Spring คุณจะพบว่ามีสองวิธี
1. ลายมือทำแผนที่ทรัพยากร:
@การกำหนดค่า @enablewebmvcpublic คลาส webconfig ขยาย webmvcconfigureradapter {@Override โมฆะสาธารณะ addresourceHandlers (ResourceHandlerRegistry Registry) {registry.addresourceHandler ("/ทรัพยากร/**") .SetCacheControl (cachecontrol.maxage (1, timeUnit.Hours) .CachePublic ()); -อย่างที่คุณเห็นคุณสามารถตั้งค่าเวลาแคชและวิธีที่ง่ายกว่าคือการกำหนดค่า XML:
<MVC: การแม็พทรัพยากร = "/ทรัพยากร/**" ตำแหน่ง = "/แหล่งข้อมูลสาธารณะ/"> <mvc: แคชควบคุม Max-age = "3600" cache-public = "true"/> </mvc: ทรัพยากร>
คุณสามารถเพิ่มสิ่งต่อไปนี้:
<!-การเข้าถึงไฟล์ทรัพยากรแบบคงที่จะถูกส่งไปยังตัวจัดการเซิร์ฟเล็ตเริ่มต้นสำหรับการประมวลผลโดยการเข้าถึงเส้นทางที่ไม่สามารถแมปไปยังคอนโทรลเลอร์-> <MVC: ค่าเริ่มต้น
6. โซลูชันรหัสขยะ
เรามักจะใช้ AJAX เพื่อส่งคำขอ แต่เรายังใช้แถบที่อยู่เพื่อทดสอบโดยตรง ขอส่งและโพสต์
ส่งคำขอโดยใช้โพสต์โดยทั่วไปจะไม่มีรหัสภาษาจีนที่อ่านไม่ออก แต่หากรหัสที่ผ่านการอ่านไม่ได้ปรากฏขึ้นคุณสามารถแก้ปัญหาได้โดยการเพิ่มตัวกรองการเข้ารหัสลงใน web.xml:
<silter> <stilter-name> ตัวละคร </filter-name> <silter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <init-Param> <param-name> <param-name> forceencoding </param-name> <param-value> True </param-value> </init-param> </filter> <filter-mapping>
ข้างต้นสามารถแก้ปัญหารหัสโพสต์ที่อ่านไม่ออกของจีนได้เท่านั้น สำหรับ GET (รวมถึงวิธีการส่งโดยตรงของแถบที่อยู่เบราว์เซอร์) เราจำเป็นต้องแก้ไขการกำหนดค่า Tomcat ค้นหาใน Server.xml ในไดเรกทอรี COF และแก้ไขดังนี้:
<connector connectiontimeout = "20000" พอร์ต = "8080" โปรโตคอล = "http/1.1" redirectport = "8443" uriencoding = "utf-8"/>
หากเราเพิ่งทดสอบและโครงการไม่ได้ปรับใช้เราสามารถค้นหา Server.xml ได้โดยตรงภายใต้เซิร์ฟเวอร์ใน Eclipse และทำการเปลี่ยนแปลงเช่นเดียวกับด้านบน:
7. รวม SpringDatajpa+Hibernate
คุณสามารถเรียนรู้เกี่ยวกับ JPA: บทนำเกี่ยวกับข้อกำหนดและตัวอย่างของ JPA (โซลูชันการคงอยู่ของข้อมูล Java)
SpringDatajpa ยังเป็นโซลูชันที่มีน้ำหนักเบาเช่นกันและ Hibernate ที่ต้องการใช้ JPA
ก่อนอื่นแพ็คเกจ Jar แพ็คเกจ SpringDatajpa Jar ถูกเพิ่มเข้าด้วยกันเมื่อรวมสปริงเข้าด้วยกัน ด้านล่างนี้เป็นแพ็คเกจขวดของไฮเบอร์เนต (และไดรเวอร์ MySQL)
<!-ไฮเบอร์เนต-> <การพึ่งพา> <roupId> org.hibernate </groupId> <ratifactid> Hibernate-Core </artifactid> <Sersion> $ {Hibernate.Version} </SidefactId> <cersion> $ {hibernate.version} </version> </การพึ่งพา> <การพึ่งพา> <roupId> org.hibernate </groupId> <ratifactid> Hibernate-entityManager </artifactid> <version> $ {hibernate.ersion <ArtIfactId> hibernate-c3p0 </artifactId> <persion> $ {hibernate.version} </เวอร์ชัน> </การพึ่งพาอาศัย> <predency> <sdercterency>เวอร์ชันการจัดการแบบครบวงจรคือ:
<!-หมายเลขเวอร์ชันไฮเบอร์เนต-> <hibernate.version> 5.1.0.final </hibernate.version>
เพิ่มไฟล์การกำหนดค่าของ JPA Stervantence.xml ลงในไดเรกทอรี Meta-Inf ฐานข้อมูลใช้ MySQL เมื่อแนะนำบทความนี้ และเพิ่มเนื้อหาต่อไปนี้:
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <เวอร์ชันต่อเนื่อง = "1.0" xmlns = "http://java.sun.com/xml/ns/persistence" xmlns: xsi = "http://ww.w3.org/2001/2001/200 XSI: schemalocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence_1_0.xsd"> ผู้ให้บริการ> org.eclipse.persistence.jpa.persistenceProvider </ผู้ให้บริการ-> <provider> org.hibernate.ejb.hibernatepersistence </ผู้ให้บริการ> <class> com.ninelephas.meerkat.pojo.user </คลาส> <! name = "hibernate.connection.driver_class" value = "com.mysql.jdbc.driver"/> <property name = "hibernate.connection.url" value = "jdbc: mysql: //127.0.0.1: 3306/demo? value = "root" /> <property name = "hibernate.connection.password" value = "root" /> <property name = "hibernate.dialect" value = "org.hibernate.dialect.mysqldialect" /> < /properties>
เนื้อหาที่สมบูรณ์หลังจากเพิ่มการสนับสนุน JPA ไปยังไฟล์การกำหนดค่าสปริง ApplicationContext.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: p = "http:/www. xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: jpa = "http://www.springframework.org/schema/data/jpa" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/mvc http://ww.springframeworkwork/schema http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd "> <! /> <bean id = "entityManagerFactory"> <property name = "jpavendoradapter"> <bean> <property name = "generatedDl" value = "true" /> <property name = "database" value = "mysql" /> < /bean> < /property> การสแกน-> <mvc: คำอธิบายประกอบ/> <bean> <property name = "viewResolvers"> <list> <bean> <property name = "คำนำหน้า" value = "/web-inf/"/> <property name = "suffix" value = "html"/> </epean> name = "defaultViews"> <list> <bean/> </list> </property> </ebean> <!-การเข้าถึงไฟล์ทรัพยากรคงที่จะออกจากเส้นทางที่ไม่สามารถแมปไปยังคอนโทรลเลอร์ไปยังตัวจัดการเซิร์ฟเล็ตเริ่มต้นสำหรับการประมวลผล-> <mvc: ref = "EntityManagerFactory" /> </ebean> <!-เปิดใช้งานธุรกรรมคำอธิบายประกอบ-> <tx: การทำธุรกรรมที่ขับเคลื่อนด้วยคำอธิบายประกอบ-manager = "TransactionManager" /> <!
ปรับเปลี่ยนเอนทิตี:
แพ็คเกจ com.anxpp.demo.core.entity; นำเข้า javax.persistence.entity; นำเข้า Javax.persistence.generatedValue; นำเข้า Javax.persistence.generationType; นำเข้า Javax.persistence.id; นำเข้า Javax.persistence.table; GenerationType.Auto) ID จำนวนเต็มส่วนตัว; ชื่อสตริงส่วนตัว; ผู้ใช้สาธารณะ () {} ผู้ใช้สาธารณะ (ชื่อสตริง) {this.name = name; } จำนวนเต็มสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (ID จำนวนเต็ม) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } @Override สตริงสาธารณะ toString () {return "id:"+id+", ชื่อ:"+ชื่อ; -คุณสามารถลบการใช้งานของชั้น DAO เราจำได้ว่าจะสืบทอดอินเทอร์เฟซเลเยอร์ DAO จาก JParePository อันทรงพลัง:
อินเทอร์เฟซสาธารณะ UserDao ขยาย jParePository <ผู้ใช้, serializable> {ผู้ใช้ findById (จำนวนเต็ม ID);}มันดูรัดกุมเป็นพิเศษและไม่จำเป็นต้องมีการใช้งานการเขียนหรือไม่? SpringDatajpa จะช่วยเราให้เสร็จโดยอัตโนมัติ
แก้ไขอินเทอร์เฟซเลเยอร์บริการ:
แพ็คเกจ com.anxpp.demo.core.service; นำเข้า java.util.list; นำเข้า com.anxpp.demo.core.entity.user; อินเทอร์เฟซผู้ใช้งานสาธารณะ {ผู้ใช้ findById (จำนวนเต็ม); ผู้ใช้บันทึก (ชื่อสตริง); รายการ <user> findall ();}ปรับเปลี่ยนการใช้งานเลเยอร์บริการ:
แพ็คเกจ com.anxpp.demo.core.service.impl; นำเข้า java.util.list; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.stereotype.service; com.anxpp.demo.core.entity.user; นำเข้า com.anxpp.demo.core.service.userService; @ServicePublic คลาส UserserviceImpl ใช้ผู้ใช้ {@AutoWired UserDaO UserDao; @Override ผู้ใช้สาธารณะ FindById (ID จำนวนเต็ม) {return userdao.findbyid (id); } @Override ผู้ใช้สาธารณะบันทึก (ชื่อสตริง) {return userdao.save (ผู้ใช้ใหม่ (ชื่อ)); } @Override รายการสาธารณะ <user> findall () {return userdao.findall (); -ปรับเปลี่ยนคอนโทรลเลอร์เพื่อให้อินเทอร์เฟซทดสอบหลายรายการ:
แพ็คเกจ com.anxpp.demo.controller; นำเข้า java.util.hashmap; นำเข้า java.util.map; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.stereotype.controller; org.springframework.web.bind.annotation.requestmapping; นำเข้า org.springframework.web.bind.annotation.responsebody; นำเข้า com.anxpp.demo.core.service.userService; @RequestMapping ("/") @ResponseBody Public String INDEX () {return "index"; } @RequestMapping ("/info") ข้อมูลสตริงสาธารณะ () {return "info"; } @RequestMapping ("/findall") @ResponseBody แผนที่สาธารณะ <สตริงวัตถุ> getUser () {แผนที่ <สตริงวัตถุ> แผนที่ = ใหม่ hashmap <สตริงวัตถุ> (); map.put ("state", "ความสำเร็จ"); map.put ("data", userservice.findall ()); แผนที่กลับ; } @RequestMapping ("/findById") @ResponseBody แผนที่สาธารณะ <String, Object> FindById (ID จำนวนเต็ม) {แผนที่ <String, Object> map = new HashMap <String, Object> (); map.put ("state", "ความสำเร็จ"); map.put ("data", userservice.findbyid (id)); แผนที่กลับ; } @RequestMapping ("/เพิ่ม") @ResponseBody แผนที่สาธารณะ <สตริงวัตถุ> บันทึก (ชื่อสตริง) {แผนที่ <สตริงวัตถุ> map = new hashmap <string, object> (); map.put ("state", "ความสำเร็จ"); map.put ("data", userservice.save (ชื่อ)); แผนที่กลับ; -เอฟเฟกต์การทำงาน:
ดังนั้นถ้าคุณต้องการเพิ่มข้อมูลที่ค้นหานามสกุลที่ระบุด้วย ID มากกว่าค่าที่ระบุ
ถ้าเป็น SQL เราจะเขียนด้วยวิธีนี้ (? หมายถึงพารามิเตอร์):
เลือก * จากผู้ใช้ที่ id>? และชื่อเหมือน '?%';
แต่ที่นี่เราไม่จำเป็นต้องเขียน SQL (หรือ HQL) และเพิ่มวิธีการลงในอินเทอร์เฟซเลเยอร์ DAO:
รายการ <user> FindByIdGreaterThanandnamelike (ID จำนวนเต็มชื่อสตริง);
คุณไม่จำเป็นต้องสงสัยว่าวิธีการข้างต้นจะสำเร็จหากดำเนินการ (หมายเหตุ: ใช้การใช้งานบริการโปรดจำชื่อ+"%" เมื่อเรียกวิธีนี้)!
ข้างต้นเป็นความรู้ที่เกี่ยวข้องที่แนะนำให้คุณทราบเกี่ยวกับการสร้าง SpringMVC+SpringDatajpa+Hibernate จากโครงการ Java ขั้นพื้นฐานที่สุด ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณต้องการทราบข้อมูลเพิ่มเติมโปรดให้ความสนใจกับเว็บไซต์ Wulin.com!