머리말
나는 항상 SpringMVC+mybatis를 사용하여 백엔드 인터페이스를 개발했습니다. 나는 최근에 유휴 상태였다. 기존 기능 요구 사항에 따라 SpringBoot+Mybatis를 사용하여 간단한 웹 프로젝트를 배포합니다.
사용 된 도구
해결 된 문제
1. 아이디어로 스프링 부츠 프로젝트를 만드는 방법
2. 서버, 데이터베이스, myBatis, 파서보기를 구성하는 방법
3. MyBatis 생성기를 사용하여 자동으로 코드를 생성하는 방법
4. 멀티 파트를 사용하여 파일을 업로드하는 방법
5. SpringBoot 트랜잭션을 사용하는 방법
6. Tomcat 배포를 포장하는 방법
아이디어를 사용하여 SpringBoot 프로젝트를 만듭니다
1. 아이디어를 열고 파일 -> 새 -> 프로젝트, Spring Initializr를 선택한 다음 다음으로 선택하십시오.
2. ariifact를 수정하십시오. 아래 이름과 패키지는 자동으로 수정됩니다. 포장에는 두 가지 모드가 있으며, 하나는 항아리이고 다른 하나는 전쟁입니다. SpringBoot에는 Tomcat과 함께 제공되므로 프로젝트는 JAR이며 직접 실행할 수 있습니다. 기존 프로젝트가 Tomcat에 배치되는 동안 전쟁 패키지가되어야합니다. 그리고 다음에.
3. 프로젝트 종속성을 설정 한 다음 다음 페이지로 이동하여 프로젝트 이름을 설정 한 다음 완료를 클릭하여 완료하십시오.
4. 프로젝트를 입력하십시오
pom.xml
<? xml version = "1.0"encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.xsd"> <modelversion> 4.0.0 </modelversion> <groupid> com.example </groupId> <artifactid> springDecactid> <버전> 0.0.1-snapshot </version> <parging> war </packaging> <name> springbootdemo </name> <description> 스프링 부츠를위한 데모 프로젝트 </descript> <pergonid> org.spramework.boot </groupId> <artifactid> spring-boot-starter-parent </artifactid> </0.2.0.2. <!-리포지토리에서 부모를 조회합니다-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.va.va.va. <pectionies> <pectionency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-jdbc </artifactid> </fectionency> <pectomency> <groupid> org.springframework.boot.boot </groupICD> </relepactid> spring-bboot-wepterb </artifactid> <groupid> org.mybatis.spring.boot </groupid> <artifactid> mybatis-spring-boot-starter </artifactid> <3.2 </dependency> <pectionement> <groupid> org.springframework.boot </group-hopt> spring-doptool> <cope> runtime </scope> </dependency> <pectomency> <groupId> com.microsoft.sqlserver </groupid> <artifactid> mssql-jdbc </artifactid> <cope> 런타임 </scope> </speendency> <groupid> <groupid> org.springframework.boot> <Artifactid> Spring-Boot-Starter-Tomcat </artifactid> <cope> 제공 </scope> </fectionency> <prectionemency> <groupid> org.springframework.boot </groupIcid> <artifactid> spring-boot-starter-test </artifactid> </scope </scope> </deplency> </dependencies> <groupid> org.springframework.boot </groupid> <artifactid> Spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>
구성 파일이없는 SpringMVC
두 가지 예 : 1. HTTP 요청 액세스 및 렌더링 페이지 2. HTTP 요청은 JSON 문자열을 반환합니다.
-데이터 소스를 연결하고 렌더링을 봅니다
-Add View 렌더링 POM 종속성
-환영 컨트롤러를 만듭니다
새로운 프로젝트 구조
Application.yml 데이터 소스를 구성하고 렌더링보기
# 데이터 소스 및 뷰 구성 스프링 : DataSource : url : jdbc : sqlserver : // xx : 1433; databaseName = xx username : xx 암호 : xx 드라이버 클래스-이름 : com.microsoft.sqlserver.jdbc.sqlserverdriver mvc :/web-inf/views/viewspix :.
pom.xml은 뷰 렌더링 종속성을 추가합니다
<!-JSP 사용-> <pectionency> <groupId> org.apache.tomcat.embed </groupid> <artifactid> tomcat-embed-jasper </artifactid> <scope> 제공 </scope> </fexendence> <pependency> <groupid> javax.suplet </groupled> <artifactid> jstl> jstl </artifactid>
WelcomeController를 만듭니다
package com.example.springbootdemo.web; import com.example.springbootdemo.entity.welcome; import com.example.springbootdemo.response.response; import com.example.springbootdemo.response.responsecode; import org.springframework.steretype.contypemporty; org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; import org.springframework.web.servlet.modelandview; import java.util.arraylist; import java.util.list;@controller@"/") WelcomeController { / *** 방문 환영 .jsp page* @return* / @requestmapping ( "WelcomeIndex") public model 및 welcomeIndex () {modelAndView mv = new ModelAndView (); mv.setViewName ( "환영"); mv.addoBject ( "이름", "xx"); 리턴 MV; } / *** return JSON String* @return* / @requestmapping ( "getwelcomeInfo") @ResponseBody public responsk getWelcomeInfo () { / *** 테스트 데이터* / list <CLECTE> 환영 = new ArrayList <> (); 환영 W1 = 새로운 환영 (); W1.SetID ( "1"); w1.setname ( "xx1"); W1. 세트 (11); W1. 세트 젠더 ( "여성"); 환영 W2 = 새로운 환영 (); W2.SetId ( "2"); w2. 세트 이름 ( "xx2"); W2. 세트 (22); W2. 세트 젠더 ( "남성"); 환영 .add (w1); 환영 .add (w2); 응답 응답 = 새로운 응답 (); Response.setData (환영); response.setRetcode (responseCode.Success); Response.setretdesc ( "성공"); 반환 응답; }}Welcome.jsp 만들기
< %@ page contenttype = "text/html; charset = utf-8"language = "java" %> <html> <head> <title>보기 렌더링보기 </title> </head> <body> hello, $ {name} </body> </html>프로젝트를 시작하고 액세스하십시오
http : // localhost : 8080/환영/getwelcomeinfo
http : // localhost : 8080/환영/환영합니다
mybatis 생성기를 사용하여 코드를 자동으로 생성합니다
*mapper.xml, 모델, 테이블 용 DAO 파일을 작성하는 데 사용됩니다
myBatis 생성기 추가하여 POM.XML에서 코드 플러그인을 자동으로 생성하십시오.
<빌드> <플러그인> <GroupIn> org.springframework.boot </groupId> <artifactid> Spring-Boot-Maven-Plugin </artifactid> </plugin> <!-myBatis 생성기 자동으로 코드 플러그인을 생성합니다-> <flugin> <groupId> org.mybatis.generator </groupid> <artifactid> mybatis-generator-maven-plugin </artifactid> <3.2 <3.2 </version> <configuration> <configurationFile> $ {basidir} /src/main/resources/generator/generatorconfig.xml </configurationFile> true> verwrite> verbose> </configuration> </plugin> </plugins> </build>위의 pom.xml에 구성된 리소스/생성기 폴더에 GeneratorConfig.xml을 추가하십시오.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype generatorconfiguration public "-// mybatis.org//dtd mybatis generator configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-conerator-config_1_0.dtd"> 데이터베이스 드라이버 : 로컬 하드 디스크에서 데이터베이스 드라이버 패키지를 선택합니다-> <classPathentry location = "c : /users/.m2/repository/com/microsoft/sqlserver/mssql-jdbc/6.2.jre8/mssql-jdbc-6.2. TargetRuntime = "MyBatis3"> <CommentGenerator> <속성 이름 = "suppressDate"value = "true"/> <!-자동으로 생성 된 주석을 제거할지 여부 : 예 : 거짓 : 아니오-> <속성 이름 = "value ="true "/> </commentGenerator> <!-데이터베이스 링크 URL, username, password-> <jdbcconnection driverclass = "com.microsoft.sqlserver.jdbc.sqlserverdriver"ConnectionUrl = "jdbc : sqlserver : // xx : 1433; databasename = xx"userId = "xx"password = "xx"> </jdbcconnection> <javatypperesolver> value = "false"/> </javatyperesolver> <!-모델 패키지 이름과 위치 생성-> <javamodelgenerator targetpackage = "com.example.springbootdemo.entity"targetProject = "src/main/java"> <property name = "value"/> <true value "" "" "" "" "" "" "" "" </javamodelgenerator> <!-매핑 파일의 패키지 이름 및 위치 생성-> <sqlmapgenerator targetpackage = "mybatis"targetproject = "src/main/resources"> <property name = "enableSubPackages"value = "true"/> </sqlmapgenerator>-<javaclientator ~ <javaclienterator ~ <javaclienterator의 위치. type = "xmlmapper"targetpackage = "com.example.springbootdemo.mapper"targetproject = "src/main/java"> <property name = "enablesubpackages"value = "true"/> </javaclientgenerator> <!-이름의 이름은 데이터베이션의 이름입니다. tableName = "XX"domainObjectName = "StudentBinding"enableCountByExample = "false"enableUpdateByexample = "false"enabledeTeTeByexample = "false"enableseLectByexample = "false"selectByexampleQuiltQuelfeRID = "false"> </table> </context> </generatorconfiguration>
Mybatis-Generator 사용 : Maven에서 생성하여 데이터베이스의 테이블을 기반으로 관련 클래스를 생성합니다.
구성 편집 -> 추가 -> maven
mybatis를 구성하십시오
Application.yml에 mybatis 구성을 추가하십시오
# mybatis 구성 mybatis : mapper-locations : classpath*: mybatis/*mapper.xml type-aliases-package : com.example.springbootdemo.entity
스캔하기 위해 @repository ( "StudentbindingMapper") 주석을 추가하십시오
@Repository ( "StudentBindingMapper") 공개 인터페이스 StudentBindingMapper {}springbootdemoapplication.java에 @mapperscan을 추가하십시오
package com.example.springbootdemo; import org.mybatis.spring.annotation.mapperscan; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootapplication;@springbootapplication@mapperscan ( "com.example.springbootdemo.mapper") public class springbootdemoapplication {public static void main [] args) {springApplication.run (springbootdempollas, arrn); }}서비스 및 컨트롤러 계층을 추가하십시오
프로젝트 수준
StudentBindingService를 추가하십시오
package com.example.springbootdemo.service; import com.example.springbootdemo.entity.studentbinding; import java.util.list; public interface withy studentbindingservice {int deletebyprimarykey (long id); int insert (StudentBinding Record); int insertselection (StudentBinding Record); StudentBinding SelectByPrimarykey (긴 ID); int updateByPrimaryKeySelective (StudentBinding Record); Int UpdateByPrimaryKey (StudentBinding Record); void validtransaction (long id); List <TudlyBinding> GetStudentBindbyQuery (StudentBinding Record);}StudentBindingServiceImpl을 추가하십시오
패키지 com.example.springbootdemo.service.impl; import com.example.springbootdemo.entity.studentbinding; import com.example.springbootdemo.mapper.studentBindingMapper; import com.example.springbootdemo.service.studentBindingsBindingService; 가져 오기; org.springframework.bean.bean.annotation.autowired; import org.springframework.stereotype.service; import org.springframework.transaction.annotation.transactional; value = @service (value = "StudentBindingservice") public vindingservice emplesser inmpesser inmpesser inmpesser inmpledments inmentser. 개인 학생 비인딩 메이프 StudentBindingMapper; @override public int deletebyprimarykey (long id) {retud studentbindingmapper.deletebyprimarykey (id); } @override public int insert (StudentBinding Record) {retud StudentBindingMapper.Insert (레코드); } @override public int insertselection (StudentBinding Record) {retud StudentBindingMapper.insertSelective (레코드); } @override public studentbinding selectByPrimaryKey (long id) {retud StudentBindingMapper.SelectByPrimaryKey (id); } @override public int updateByPrimaryKeySelective (StudentBinding Record) {return StudentBindingMapper.upDateByPrimaryKeySelective (레코드); } @override public int updateByPrimaryKey (StudentBinding Record) {retud StudentBindingMapper.upDateByPrimaryKey (레코드); } @Override @transactional public void validtransaction (long id) {// 삭제 후 id StudentBindingMapper.DeleteByPrimaryKey (id)의 데이터를 삽입합니다. StudentBinding Record = New StudentBinding (); record.setid (id); StudentBindingMapper.insertselective (레코드); } @override public list <studentbinding> getStudentBindbyQuery (StudentBinding Record) {retud StudentBindingMapper.GetStudentBindByQuery (레코드); }}StudentBindingController가 추가되었습니다
package com.example.springbootdemo.web; import com.example.springbootdemo.entity.studentbinding; import com.example.springbootdemo.response.response; import com.example.springbootdemo.response.responsecode; 가져 오기; com.example.springbootdemo.service.studentbindingservice; import org.springframework.beans.ackory.annotation.autowired; import org.springframework.stereotyp.controller; import org.springframework.web.bind.annotation.requestmapping; import; org.springframework.web.bind.annotation.requestparam; import org.springframework.web.bind.annotation.responsebody; import org.springframework.web.multipart.multipartfile; import org.springframework.web.servlet.modverview; java.io.ioexception; import java.util.list;@controller@requestmapping (value = "/studentbind") 공개 클래스 StudentBindingController {@autowired frivate studentbindingservice StudentBindingService; / ** * 요청 매개 변수에 따라 바운드 학생 정보 삭제 * @param id * @return */ @requestmapping ( "deletebyprimarykey") @ResponseBody public resignd deletebyPrimaryKey (long id) {응답 응답 = 새 응답 (); if (id == null) {response.setretcode (responsecode.paramarter_error); Response.SetRetDesc ( "매개 변수 오류"); 반환 응답; } try {StudentBindingService.deleteByPrimaryKey (ID); response.setRetcode (responseCode.Success); Response.setRetdesc ( "deletesuccess"); } catch (예외 e) {e.printstacktrace (); response.setRetcode (responseCode.Failed); Response.SetRetDesc ( "deleteexception"); } 반환 응답; } / ** * 요청 매개 변수에 따라 경계 학생 정보 추가 * @param record * @return * / @requestmapping ( "insertselective") @ResponseBody public response insertelective (StudentBinding Record) {응답 응답 = 새 응답 (); if (record == null) {response.setRetcode (responseCode.paramarter_error); Response.SetRetDesc ( "매개 변수 오류"); 반환 응답; } try {StudentBindingService.insertSelective (레코드); response.setRetcode (responseCode.Success); Response.SetRetDesc ( "성공 추가"); } catch (예외 e) {e.printstacktrace (); response.setRetcode (responseCode.Failed); Response.SetRetDesc ( "예외 추가"); } 반환 응답; } / ** * 요청 매개 변수에 따라 바운드 학생 정보를 쿼리하십시오 * @param id * @return * / @requestmapping ( "selectByPrimaryKey") @ResponseBody public resigne selectByPrimaryKey (long id) {응답 응답 = 새 응답 (); if (id == null) {response.setretcode (responsecode.paramarter_error); Response.SetRetDesc ( "매개 변수 오류"); 반환 응답; } try {StudentBinding StudentBinding = StudentBindingService.SelectByPrimaryKey (ID); Response.SetData (StudentBinding); response.setRetcode (responseCode.Success); Response.SetRetDesc ( "쿼리 성공"); } catch (예외 e) {e.printstacktrace (); response.setRetcode (responseCode.Failed); Response.SetRetDesc ( "쿼리 예외"); } 반환 응답; } / ** * @transaction 주석이 사용하기 쉬운 지 확인 * @param id * @requestmapping ( "validtransaction") @ResponseBody public responsk validtransaction (long id) {응답 응답 = 새 응답 (); if (id == null) {response.setretcode (responsecode.paramarter_error); Response.SetRetDesc ( "매개 변수 오류"); 반환 응답; } try {StudentBindingService.ValidTransaction (id); response.setRetcode (responseCode.Success); } catch (예외 e) {e.printstacktrace (); response.setRetcode (responseCode.Failed); } 반환 응답; }/ *** render jsp page* @return*/ @requestmapping ( "환영진") public model 및 welcomeIndex () {list <studentBinding> StudentBindings = StudentBindingService.getStudentBindbyQuery (new StudentBinding ()); // model.addattribute ( "StudentBindings", StudentBindings); ModelAndView MV = 새로운 ModelAndView (); mv.setViewName ( "환영"); mv.addoBject ( "학생 교과", StudentBindings); 리턴 MV; } / *** 파일 업로드 페이지로 점프* @return* / @requestmapping ( "multipartIndex") public String multipartIndex () {return "multipart-index"; }/** * 지정된 디렉토리에 파일을 업로드 * @param 파일 * @return */@requestmapping ( "/upload") @ResponseBody public responsk upload (@requestparam ( "file") multipartFile 파일) {응답 응답 = new response (); if (file.isempty ()) {response.setretcode (responseCode.paramarter_error); Response.SetRetDesc ( "매개 변수 오류"); 반환 응답; } try {String filepath = "d : // ceshi // upload //"; 파일 dir = 새 파일 (filepath); if (! dir.isdirectory ()) {dir.mkdir (); } 문자열 fileOriginalName = file.getoriginalFilename (); 파일 쓰기 파일 = 새 파일 (FilePath + FileOriginalName); // 파일을 디스크 파일에 씁니다 .transferto (writefile); response.setRetcode (responseCode.Success); Response.SetRetDesc ( "성공적으로 업로드"); } catch (ioexception e) {e.printstacktrace (); response.setRetcode (responseCode.Failed); Response.SetRetDesc ( "업로드 실패"); } 반환 응답; }}프로젝트를 다시 시작한 후 다양한 인터페이스에 액세스 할 수 있습니다
SpringBoot 구성 트랜잭션
SpringBoot에서 트랜잭션을 구성하는 두 가지 방법이 있습니다
1. SpringBootdemoApplication.java 프로젝트 입구에서 @enableTransactionManagement 주석을 추가하여 거래를 시작하십시오.
2. 서비스 구현 클래스에 @transactional 주석을 추가하면 클래스의 모든 방법이 트랜잭션을 통해 관리됩니다. 서비스 구현 클래스 메소드에 @Transactional 주석을 직접 추가 한 다음이 방법에 대해 트랜잭션 관리 만 수행 할 수 있습니다. 위 코드에서 메소드에 트랜잭션을 추가하는 예가 있습니다.
Tomcat 배포를위한 Springboot 패키지
구성 편집 -> maven-> 추가 -> 시작 -> 전쟁 패키지 복사 -> tomcat webapp-> 전쟁 패키지의 이름 수정 -> tomcat bin-> startup.bat
Tomcat이 시작되면 http : // localhost : 8080/springbootdemo/belopping/belopindex를 방문하여 확인하십시오
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.