SpringBoot+Mybatis+swagger2 簡單的增刪改查
阿新 • • 發佈:2018-12-22
SpringBoot+Mybatis+swagger2
開門見山,直接上教程吧,開發工具用idea
步驟
建立一個SpringBoot 專案
加入一些依賴
建立完成後檢視一下程式碼結構,這裡面有我自己新增的一些
看下pom檔案
<?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.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cheny.demo</groupId> <artifactId>crud</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>crud</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 資料庫驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> <!-- 資料庫連線池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
因為比較習慣yml這種配置檔案的使用, 所以我把application.properties配置檔案刪除 重新建立了一個
配置如下 ,包括 配置檔案的選擇, 資料來源的配置,mybatis的對映檔案等等
spring: profiles: active: dev datasource: name: test url: jdbc:mysql://127.0.0.1:3306/test username: root password: ok # 使用druid資料來源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 tomcat: initialSize: 1 min-idle: 1 max-idle: 20 max-wait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 30000 validationQuery: SELECT 1 testWhileIdle: true testOnBorrow: false testOnReturn: false logging: file: logs/demo.log mybatis: mapper-locations: classpath:mybatis/*.xml #注意:一定要對應mapper對映xml檔案的所在路徑 type-aliases-package: com.cheny.demo # 注意:對應實體類的路徑
由於這裡設定了多個環境 分別是開發環境和生產環境,由於在application.yml指定了環境為開發環境,所以再把開發環境的配置檔案貼出來,裡面沒什麼配置,就只是設定了一個埠
application-dev.yml
server:
port: 8080
Dao、Mapper和Service 都喝SSM 一樣的書寫
這裡就不一一展示了
由於我們這裡用到了swagger2 所以還要對swagger2進行配置
首先pom中要有相應的依賴
然後再springboot的啟動類的同級目錄下 建立一個Swagger2的配置類
Swagger2.java
package com.cheny.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * Created by chenyong on 2018/11/15 0015. */ @Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //為當前包路徑 .apis(RequestHandlerSelectors.basePackage("com.cheny.demo.web")) .paths(PathSelectors.any()) .build(); } //構建 api文件的詳細資訊函式,注意這裡的註解引用的是哪個 private ApiInfo apiInfo() { return new ApiInfoBuilder() //頁面標題 .title("Spring Boot 測試使用 Swagger2 構建RESTful API") //建立人 .contact(new Contact("MarryFeng", "http://www.baidu.com", "")) //版本號 .version("1.0") //描述 .description("API 描述") .build(); } }
在controller層中還要對每個動作記性描述 用來在swagger中檢視詳細的描述
package com.cheny.demo.web;
import com.cheny.demo.service.PersonService;
import com.cheny.demo.service.VO.PersonVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by chenyong on 2018/11/15 0015.
*/
@RestController
@RequestMapping("/person")
@Api("person測試controller")
public class PersonController {
@Autowired
private PersonService personService;
@RequestMapping(value = "/queryList", method = RequestMethod.GET)
@ApiOperation(value = "查詢列表")
public ActionResult queryList(){
return new ActionResult(ErrorCode.Success, personService.queryList());
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ApiOperation(value = "新增")
public ActionResult add(PersonVo personVo){
personService.save(personVo);
return new ActionResult();
}
@RequestMapping(value = "/update", method = RequestMethod.PUT)
@ApiOperation(value = "修改")
public ActionResult update(PersonVo personVo){
personService.update(personVo);
return new ActionResult();
}
@RequestMapping(value = "/delete", method = RequestMethod.DELETE)
@ApiOperation(value = "刪除")
public ActionResult delete(String id){
personService.delete(id);
return new ActionResult();
}
@RequestMapping(value = "/getObjById", method = RequestMethod.GET)
@ApiOperation(value = "根據id查詢")
public ActionResult getObjById(String id){
return new ActionResult(ErrorCode.Success, personService.getObjById(id));
}
}
在相應的方法中填寫相應的引數 直接可以進行測試 還是比較方便的