อธิบาย
โครงการนี้ใช้โครงสร้าง maven ซึ่งส่วนใหญ่แสดงให้เห็นถึงสปริง MVC + mybatis, คอนโทรลเลอร์เพื่อรับข้อมูลและส่งคืนข้อมูลในรูปแบบ JSON
โครงสร้างโครงการ
การพึ่งพาแพ็คเกจและคำแนะนำ
ไฟล์ POM:
<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/maven-v4_0_0.xsd"><modelversion>4.0.0 </modelversion> upid> <ArtIfactId> MAVEN01 </ArtIfactId> <packaging> สงคราม </packaging> <cersion> 0.0.1-SNAPSHOT </Sersion> <name> MAVEN01 Maven Webapp </name> <url> http://maven.apache.org </url> <properties> <!-หมายเลขเวอร์ชัน mybatis-> <mybatis.version> 3.2.6 </mybatis.version> <! เวอร์ชัน-> <slf4j.version> 1.7.7 </slf4j.version> <log4j.version> 1.2.17 </log4j.version> </premerties> ไอออน> 3.8.1 </เวอร์ชัน> <pope> ทดสอบ </cope> </predency> <การพึ่งพา> <loupId> org.springframework </groupId> <ratifactid> Spring-Webmvc </artifactid> <cersion> 4.1.2. https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl-> <cendency> <roupid> org.codehaus.jackson </groupid> <ratifactid> https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-asl-> <cendency> <sdependency> <roupid> org.codehaus.jackson </groupid> https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind-> <pendency> <roupid> com.fasterxml.jackson.core </groupid> -> <predency> <roupId> org.mybatis </groupId> <ratifactid> mybatis-spring </artifactid> <cersion> 1.3.0 </version> แพ็คเกจ-> <predency> <roupId> mysql </groupId> <ratifactId> mysql-connector-java </artifactid> <version> 5.1.30 </เวอร์ชัน> </dercendency> <!-mybatis orm เฟรมเวิร์ก-> <การพึ่งพา> <roupId> org.mybatis </groupId> <ratifactid> mybatis </artifactid> <cersion> 3.4.1 </เวอร์ชั่น> </การพึ่งพา> <การพึ่งพา E </version> </dermentrency> <การพึ่งพา> <roupId> org.springframework </groupId> <ratifactId> Spring-Jdbc </artifactid> <erson> 4.1.2.Release </เวอร์ชัน> </การพึ่งพา
คำแนะนำการกำหนดค่า
web.xml
<! doctype web-app public "-// Sun Microsystems, Inc.//dtd Web Application 2.3 // en" "http://java.sun.com/dtd/web-app_2_3 การแม็พ-> <servlet> <servlet-name> springmvc </servlet-name> <servlet-lass> org.springframework.web.servlet.dispatcherservlet </servlet-cla SS> <init-Param> <param-name> contextConfigLocation </param-name> <param-value>/web-inf/springmvc-servlet.xml </param-value> </itrient-param> <! <load-on-startup> 1 </load-on-startup>-> </servlet> <servlet-mapping> <servlet-name> springmvc </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
SpringMvc-servlet.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: mvc = "http://www.springframework.org/schema/MVC http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/Context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd"><!-สแกนแพ็คเกจและแพ็คเกจย่อย-> <บริบท: Component-Scan base-package = "com.maven01 คำอธิบายประกอบคุณต้องกำหนดค่าการตั้งค่าต่อไปนี้-> <MVC: คำอธิบายประกอบที่ขับเคลื่อนด้วย/> <!-dispatcher servelet-> <mvc: การแมปทรัพยากร = "/คงที่/**" ตำแหน่ง = "/"/"/> <! id = "mappingjacksonhttpmessageConverter" class = "org.springframework.http.converter.json.mappingjackson2httpmessageConverter"> <คุณสมบัติ name = "supportedediatypes"> <slist> <dalue> แอปพลิเคชัน/json; charset = utf-8 </alues> </list> </property> </ebean> <bean> <beanclass = "org.springframework.web.servlet.view.internalresourceView คำนำหน้า-> <property name = "คำนำหน้า" value = "/web-inf/view/"/> <!-คำต่อท้าย-> <property name = "suffix" value = ". jsp"/> </ebean> <!-mysql-> <!-แนะนำข้อมูลการกำหนดค่าแหล่งข้อมูลภายนอก -> <beanclass = "org.springframework.beans.factory.config.propertyplaceholderconfigurer"> <property name = "locations"> <value> classpath: jdbc.properties </value> </property> id = "dataSource" class = "org.springframework.jdbc.datasource.drivermanagerdataSource"> <property name = "driverclassname" value = "$ {jdbc.driver}"> value = "$ {jdbc.username}"> < /คุณสมบัติ> <!-สปริงและ mybatis ถูกรวมเข้าด้วยกันอย่างสมบูรณ์และไม่จำเป็นต้องใช้ไฟล์การแมปการกำหนดค่า mybatis-> <bean id = "sqlsessionfactory"> <property name = "dataSource" dataSource " value = "classpath: com/maven01/mapper/*. xml"> </property> </ebean> <!-ชื่อแพ็คเกจที่อินเทอร์เฟซ DAO ตั้งอยู่คือสปริงจะค้นหาคลาสภายใต้มันโดยอัตโนมัติ-> <bean> value = "SQLSessionFactory"> </คุณสมบัติ> </ebean> <!-กำหนดค่าตัวจัดการธุรกรรม-> <bean id = "txManager" class = "org.springframework.jdbc.datasource.datasourcetransactionManager"jdbc.propertiesjdbc.driver = com.mysql.jdbc.driverjdbc.url = jdbc: mysql: // localhost: 3306/พนักงาน? useunicode = true & disteesencoding = utf-8jdbc.username = rootjdbc.passpass
การกำหนดค่าไฟล์ MyBatis Mapper
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" namespace = "com.maven01.dao.iemployeedao"> <select id = "getall" resultType = "com.maven01.pojo.employee"> เลือก*frommployeeslimit 1,10 </select> </mapper>
โครงสร้างฐานข้อมูล
โครงการนี้ใช้ฐานข้อมูลพนักงานตัวอย่าง MySQL และเพื่อน ๆ ที่ต้องการมันสามารถดาวน์โหลดได้เอง
http://www3.ntu.edu.sg/home/ehchua/programming/sql/sampledatabases.html
คำอธิบายรหัส
แบบอย่าง
แพ็คเกจ com.maven01.pojo; พนักงานระดับสาธารณะ {public int emp_no; สตริงสาธารณะ first_name; int สาธารณะ int getemp_no () {return emp_no;} โมฆะสาธารณะ setemp_no (int emp_no) {this.emp_no = emp_no; setFirst_Name (สตริง first_name) {this.first_name = first_name;}}DAO
แพ็คเกจ com.maven01.dao; นำเข้า java.util.list; นำเข้า org.springframework.stereotype.repository; นำเข้า com.maven01.pojo.employee; อินเตอร์เฟสสาธารณะ iemployeedao {รายการสาธารณะ <พนักงาน> getall ();บริการ
แพ็คเกจ com.maven01.service; นำเข้า java.util.list; นำเข้า com.maven01.pojo.employee; อินเตอร์เฟสสาธารณะ iemployeeservice {รายชื่อสาธารณะ <Spopentee> getall ();};ServiceImpl
แพ็คเกจ com.maven01.service.impl; นำเข้า java.util.list; นำเข้า org.springframework.beans.factory.annotation.autowired; นำเข้า org.springframework.stereotype.service; com.maven01.service.*; นำเข้า Javax.annotation.Resource; @ServicePublic Class พนักงานบริการ leployeeservice {@autowiredPrivate iemployeedao dao; พนักงานสาธารณะผู้ควบคุม
แพ็คเกจ com.maven01.controller; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า javax.annotation.resource; นำเข้า org.springframework.stereotype.controller; org.springframework.web.bind.annotation.requestmethod; นำเข้า org.springframework.web.bind.annotation.responsebody; นำเข้า com.maven01.dto.*; นำเข้า com.maven01.pojo.employee นำเข้า; com.maven01.service.iemployeeservice;@controller@requestmapping ("/mvc") democontroller ชั้นเรียนสาธารณะ {@resourceprivate iemployeeservice พนักงานบริการ; @requestmapping (method = requestmethod.get, value = {return stumperyervice.getall ();}}การรันผลลัพธ์
รหัสของโครงการนี้ถูกส่งไปยัง GIT และที่อยู่ดาวน์โหลดคือ https://github.com/hbb0b0/springmybatis.git
ข้อผิดพลาดที่พบ:
MappersCannerConfigurer ได้รับการกำหนดค่าให้รวมเฉพาะเลเยอร์ DAO อย่ากำหนดค่าแพ็คเกจทั้งหมดเพื่อสแกนมิฉะนั้นจะเกิดข้อผิดพลาด: ไม่มีการกำหนดถั่วประเภท [com.maven01.service.iemployeeservice] ถูกกำหนดไว้: การจับคู่เดียวที่คาดหวัง
<!-สปริงจะค้นหาคลาสโดยอัตโนมัติภายใต้อินเทอร์เฟซ DAO-> <Bean> <property name = "basepackage" value = "com.maven01.*"/> <property name = "SQLSessionFactoryBeanName" value.beansionSfory.BeanStory. Bean of type [com.maven01.service.iemployeeservice] ถูกกำหนดไว้: การจับคู่ถั่วเดี่ยวที่คาดหวัง แต่พบ 2: พนักงานบริการ, iemployeeserviceat org.springframework.beans.factory.support.defaultlistable อินเทอร์เฟซตั้งอยู่สปริงจะค้นหาคลาสภายใต้มันโดยอัตโนมัติ -> <bean> <property name = "basepackage" value = "com.maven01.dao"/> <property name = "SQLSessionFactoryBeanName" value = "SQLSessionFactory"> </property>
โปรดทราบว่าการจับคู่ของแพ็คเกจ MyBatis นั้นเป็นรุ่นที่ต่ำกว่าของ MyBatis-Spring และ Mybatis และ Spring
java.lang.abstractmethoderror: org.mybatis.spring.transaction.springmanagedTransaction.getTimeout () l
สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดของการรวมกันของสปริง MVC ตัวอย่างกรอบ MyBatis Framework แนะนำให้คุณรู้จักโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!