Spring Boot 통합 Mybatis Plus 와 Swagger 2 의 튜 토리 얼 상세 설명
34381 단어 SpringBoot통합MybatisPlusSwagger2
외국어:이것 은 제 가 처음으로 markdown 으로 쓴 박문 입 니 다.격식 이 좋 지 않 은 곳 은 양해 해 주 십시오.
1.pom.xml 와 application.yml
1.pom.xml 에 의존 도 를 추가 합 니 다.여기 제 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>study</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>study</name>
<description>Demo project for Spring Boot</description>
<properties>
<!-- -->
<java.version>1.8</java.version>
<mysql.version>8.0.13</mysql.version>
<mybatisPlus.version>3.4.1</mybatisPlus.version>
<druid.version>1.0.9</druid.version>
<swagger.version>2.9.2</swagger.version>
<hutool.version>5.5.8</hutool.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>${mysql.version}</version>
</dependency>
<!-- MyBatis-Plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatisPlus.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatisPlus.version}</version>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
2.resources 에서 application.yml 파일 을 새로 만 들 고 다음 설정 을 추가 합 니 다.
#
server:
port: 8080
#----------------druid -----------------------
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
# pom mysql-connector 8.0 com.mysql.cj.jdbc.Driver, com.mysql.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
#
url: jdbc:mysql://127.0.0.1:3306/study?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
initialSize: 10
minIdle: 10
maxActive: 30
#
maxWait: 60000
# , ,
timeBetweenEvictionRunsMillis: 60000
# ,
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# PSCache, PSCache
poolPreparedStatements: true
# filters, sql ,'wall'
#filters: stat,wall,log4j
# connectProperties mergeSql ; SQL
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# DruidDataSource
useGlobalDataSourceStat: true
#----------------mybatis plus -----------------------
mybatis-plus:
# xml , ( Mapper XML )
mapper-locations: classpath:mapper/*.xml
configuration:
# : Java
map-underscore-to-camel-case: true
# , MyBatis ,
call-setters-on-nulls: true
# sql ,
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# , package ( )
typeAliasesPackage: com.example.study.model.entity
global-config:
db-config:
# AUTO:" ID " INPUT:" ID",ID_WORKER:" ID ( ID)", UUID:" ID UUID";
id-type: auto
# IGNORED:" " NOT_NULL:" NULL ") NOT_EMPTY:" "
field-strategy: NOT_EMPTY
#
db-type: MYSQL
#
#
logic-not-delete-value: 1
#
logic-delete-value: 0
#----------------swagger -----------------------
swagger:
# false( false swagger-ui.html )
enable: true
# Swagger2 NumberFormatException:For input string:""
logging:
level:
io:
swagger:
models:
parameters:
AbstractSerializableParameter: ERROR
2.통합 Swagger 21.swagger 설정 클래스 SwaggerConfig.java 추가
package com.example.study.config;
import io.swagger.annotations.Api;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
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.ApiKey;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
/**
* Swagger
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
@Configuration
@EnableSwagger2
@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
public class SwaggerConfig {
/**
* API
* apiInfo() API
* select() ApiSelectorBuilder , Swagger ,
* API 。
*
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.apiInfo())
.select()
// , Api
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
//api
.apis(RequestHandlerSelectors.basePackage("com.example.study"))
.paths(PathSelectors.any())
.build()
.securitySchemes(securitySchemes());
}
/**
* API ( )
* :http://ip: /swagger-ui.html
*
* @return ApiInfo
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("demo ")
.description("demo API ")
.termsOfServiceUrl("http://localhost")
.version("1.0")
.build();
}
private List<ApiKey> securitySchemes() {
List<ApiKey> apiKeyList= new ArrayList<>();
//apiKeyList.add(new ApiKey("token", " ", "header"));
return apiKeyList;
}
}
2.contrller 패키지 를 새로 만 들 고 contrller 패키지 에 Index Controller.자바 를 새로 만 듭 니 다.
package com.example.study.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
@Api(tags = " ")
@RestController
public class IndexController {
@ApiOperation(" html")
@GetMapping("/")
public String index(){
return "hello index";
}
}
3.Study Application.java 를 시작 한 후 http://localhost:8080/swagger-ui.html 을 방문 하고 두 번 째 그림 이 나타 나 면 swagger 통합 이 완료 되 었 음 을 나타 낸다.3.Mybatis Plus 통합
1.그림 에서 MybatisPlusConfi.java 설정 페이지 플러그 인 만 들 기
package com.example.study.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* MybatisPlus
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
@Configuration
@MapperScan("com.example.study.mapper")
public class MybatisPlusConfig {
/**
* Mybatis-plus3.4.0 MybatisPlusInterceptor
* :DbType.MYSQL ,
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
/**
* useDeprecatedExecutor = false
* @return
*/
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
2.데이터베이스 에 테스트 테이블 만 들 기
CREATE TABLE `t_user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`age` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
3.실체 클래스 UserEntity.java 만 들 기
package com.example.study.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
*
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "UserEntity", description = " ")
@TableName("t_user")
public class UserEntity implements Serializable {
private static final long serialVersionUID = 6928834261563057243L;
/**
* ,
*/
@ApiModelProperty(value = "id")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
*
*/
@ApiModelProperty(value = " ")
@TableField("name")
private String name;
/**
*
*/
@ApiModelProperty(value = " ")
@TableField("age")
private Integer age;
}
4.UserMapper.java 만 들 기
package com.example.study.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.study.model.entity.UserEntity;
/**
* @author [email protected]
*/
public interface UserMapper extends BaseMapper<UserEntity> {
}
5.UserService.java 만 들 기
package com.example.study.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.study.model.entity.UserEntity;
/**
* @author [email protected]
*/
public interface UserService extends IService<UserEntity> {
}
6.UserServiceImpl.java 만 들 기
package com.example.study.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.study.model.entity.UserEntity;
import com.example.study.mapper.UserMapper;
import com.example.study.service.UserService;
import org.springframework.stereotype.Service;
/**
* @author [email protected]
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
}
7.UserController.java 를 만 듭 니 다.
package com.example.study.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.study.model.entity.UserEntity;
import com.example.study.model.param.UserParam;
import com.example.study.model.vo.ResponseVo;
import com.example.study.service.UserService;
import com.example.study.util.CommonQueryPageUtils;
import com.example.study.util.BuildResponseUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
*
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
@RestController
@Api(tags = " ")
public class UserController {
@Autowired
private UserService userService;
@ApiOperation(" ")
@PostMapping("user")
public ResponseVo<?> add(UserEntity entity) {
return userService.save(entity) ? BuildResponseUtils.success() : BuildResponseUtils.error();
}
@ApiOperation(" id ")
@GetMapping("user/{id}")
public ResponseVo<UserEntity> getById(@PathVariable String id) {
return BuildResponseUtils.buildResponse(userService.getById(id));
}
@ApiOperation(" ")
@PutMapping("user")
public ResponseVo<?> update(UserEntity entity) {
return userService.updateById(entity) ? BuildResponseUtils.success() : BuildResponseUtils.error();
}
@ApiOperation(" id ")
@DeleteMapping("user/{id}")
public ResponseVo<?> delete(@PathVariable String id) {
return userService.removeById(id) ? BuildResponseUtils.success() : BuildResponseUtils.error();
}
@ApiOperation(" ")
@GetMapping("userPage")
public ResponseVo<IPage<UserEntity>> selectPage(UserParam param) {
return BuildResponseUtils.buildResponse(CommonQueryPageUtils.commonQueryPage(param, userService));
}
}
8.매 거 진 CodeMsgEnum.자바 만 들 기
package com.example.study.enums;
/**
* code (code )
*
* @author [email protected]
* @date: 2021/2/22 9:42:00
*/
public enum CodeMsgEnum {
//
SUCCESS("0"," !"),
//
FAIL("1"," !"),
//
LOGIN_NO_PASS("1001"," "),
;
/**
*
*/
public String code;
/**
*
*/
public String msg;
CodeMsgEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
}
9.통 일 된 반환 결과 클래스 ResponseVo.자바 만 들 기
package com.example.study.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* VO
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ResponseVo", description = " ")
public class ResponseVo<T> implements Serializable {
private static final long serialVersionUID = 7748070653645596712L;
/**
*
*/
@ApiModelProperty(value = " ")
private String code;
/**
*
*/
@ApiModelProperty(value = " ")
private String msg;
/**
*
*/
@ApiModelProperty(value = " ")
private T data;
}
10.상수 클래스 QueryMethodConstant.java 만 들 기
package com.example.study.constant;
/**
* mybatis plus
* @author [email protected]
* @date 2021/2/23 11:24
*/
public interface QueryMethodConstant {
/**
*
*/
String EQ = "EQ";
/**
*
*/
String NE = "NE";
/**
* , (like '% %')
*/
String LIKE = "LIKE";
/**
* , (like '% ')
*/
String LIKE_LIFT = "LIKE_LIFT";
/**
* , (like ' %')
*/
String LIKE_RIGHT = "LIKE_RIGHT";
/**
* (not like '% %')
*/
String NOT_LIKE = "NOT_LIKE";
/**
*
*/
String GT = "GT";
/**
*
*/
String GE = "GE";
/**
*
*/
String LT = "LT";
/**
*
*/
String LE = "LE";
}
11.사용자 정의 주석 QueryMethod.자바 만 들 기(후속 유 니 버 설 페이지 조회 도구 클래스 에 사용)
package com.example.study.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
* @author [email protected]
* @date 2021/2/23 11:24
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(value = ElementType.FIELD)
public @interface QueryMethod {
/**
*
*/
String field() default "";
/**
*
*/
String method() default "";
}
12.빌 드 반환 결과 도구 류 BuildResponseUtils.java 만 들 기
package com.example.study.util;
import com.example.study.enums.CodeMsgEnum;
import com.example.study.model.vo.ResponseVo;
/**
*
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
public final class BuildResponseUtils {
/**
* response
*
* @return ResponseVo
*/
public static ResponseVo<?> success() {
ResponseVo<?> response = new ResponseVo<>();
response.setCode(CodeMsgEnum.SUCCESS.code);
response.setMsg(CodeMsgEnum.SUCCESS.msg);
return response;
}
/**
* response
* @param codeMsgEnum
* @return ResponseVo
*/
public static ResponseVo<?> success(CodeMsgEnum codeMsgEnum) {
ResponseVo<?> response = new ResponseVo<>();
response.setCode(codeMsgEnum.code);
response.setMsg(codeMsgEnum.msg);
return response;
}
/**
* code msg
*
* @param code code
* @param msg msg
* @return ResponseVo
*/
public static ResponseVo<?> success(String code, String msg) {
ResponseVo<?> response = new ResponseVo<>();
response.setCode(code);
response.setMsg(msg);
return response;
}
/**
* response( )
* @return ResponseVo
*/
public static ResponseVo<?> error() {
ResponseVo<?> response = new ResponseVo<>();
response.setCode(CodeMsgEnum.FAIL.code);
response.setMsg(CodeMsgEnum.FAIL.msg);
return response;
}
/**
*
* @param obj
* @param <T>
* @return ResponseVo
*/
public static <T> ResponseVo<T> buildResponse(T obj) {
ResponseVo<T> response = new ResponseVo<>();
response.setData(obj);
response.setCode(CodeMsgEnum.SUCCESS.code);
response.setMsg(CodeMsgEnum.SUCCESS.msg);
return response;
}
}
13.페이지 조회 도구 류 CommonQuery PageUtils.java 를 만 듭 니 다.
package com.example.study.util;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.study.annotation.QueryMethod;
import com.example.study.constant.QueryMethodConstant;
import com.example.study.model.param.PageParam;
import java.lang.reflect.Field;
import java.util.Locale;
/**
*
*
* @author [email protected]
* @date: 2021/2/22 10:02:00
*/
public final class CommonQueryPageUtils {
/**
*
*/
private static final String ASC = "asc";
/**
*
*/
private static final String DESC = "desc";
/**
*
*/
public static <T> IPage<T> commonQueryPage(PageParam param, IService<T> service) {
// page
// order
// ( : : , : (asc ,desc ) :id:desc,age:asc)
Page<T> page = new Page<>(param.getPage(), param.getLimit());
String orders = param.getOrders();
if (StringUtils.isNotBlank(orders)) {
String[] splitArr = orders.split(",");
for (String str : splitArr) {
if (StringUtils.isBlank(str)) {
continue;
}
String[] strArr = str.split(":");
if (strArr.length != 2 || StringUtils.isBlank(strArr[0]) || StringUtils.isBlank(strArr[1])) {
continue;
}
if (ASC.equals(strArr[1].toLowerCase(Locale.ROOT))) {
page.addOrder(OrderItem.asc(strArr[0]));
continue;
}
if (DESC.equals(strArr[1].toLowerCase(Locale.ROOT))) {
page.addOrder(OrderItem.desc(strArr[0]));
}
}
}
// queryWrapper
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
Class<? extends PageParam> clazz = param.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
// , private
field.setAccessible(true);
QueryMethod annotation = field.getAnnotation(QueryMethod.class);
try {
//
if (null == field.get(param)) {
continue;
}
// @QueryMethod , eq
if (null == annotation) {
queryWrapper.eq(field.getName(), field.get(param));
continue;
}
switch (annotation.method()) {
case QueryMethodConstant.EQ:
queryWrapper.eq(annotation.field(), field.get(param));
break;
case QueryMethodConstant.NE:
queryWrapper.ne(annotation.field(), field.get(param));
break;
case QueryMethodConstant.LIKE:
queryWrapper.like(annotation.field(), field.get(param));
break;
case QueryMethodConstant.LIKE_LIFT:
queryWrapper.likeLeft(annotation.field(), field.get(param));
break;
case QueryMethodConstant.LIKE_RIGHT:
queryWrapper.likeRight(annotation.field(), field.get(param));
break;
case QueryMethodConstant.GT:
queryWrapper.gt(annotation.field(), field.get(param));
break;
case QueryMethodConstant.GE:
queryWrapper.ge(annotation.field(), field.get(param));
break;
case QueryMethodConstant.LT:
queryWrapper.lt(annotation.field(), field.get(param));
break;
case QueryMethodConstant.LE:
queryWrapper.le(annotation.field(), field.get(param));
break;
default:
;
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return service.page(page, queryWrapper);
}
}
14.통 일 된 페이지 조회 요청 매개 변수 클래스 PageParam.자바 만 들 기
package com.example.study.model.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.LinkedHashMap;
/**
*
*
* @author [email protected]
* @date 2021/2/22 17:24
*/
@Data
@ApiModel(value = "PageParam", description = " ")
public class PageParam {
/**
*
*/
@ApiModelProperty(value = " , 1")
private Integer page = 1;
/**
*
*/
@ApiModelProperty(value = " , 10")
private Integer limit = 10;
/**
* ( : : , : (asc ,desc ) :id:desc,age:asc)
*/
@ApiModelProperty(value = " ( : : , : (asc ,desc ) :id:desc,age:asc)")
private String orders;
}
15.사용자 조회 조건 류 UserParam.java 를 만 들 고 PageParam 을 계승 합 니 다(앞으로 페이지 별로 조회 하 는 매개 변수 류 는 모두 PageParam 을 계승 해 야 합 니 다)
package com.example.study.model.param;
import com.example.study.annotation.QueryMethod;
import com.example.study.constant.QueryMethodConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* ( )
* @author [email protected]
* @date 2021/2/22 17:24
*/
@Data
@ApiModel(value = "UserParam", description = " ")
public class UserParam extends PageParam {
/**
* @QueryMethod , name like ‘% %'
*/
@ApiModelProperty(value = " ")
@QueryMethod(field = "name", method = QueryMethodConstant.LIKE)
private String name;
/**
* @QueryMethod age , age=
*/
@ApiModelProperty(value = " ")
private Integer age;
/**
* ( 1 < age < 2) minAge maxAge,
* ‘ @QueryMethod field ,method
* minAge = 18,maxAge=25, CommonQueryPageUtils sql 18<age AND age>25
*/
@ApiModelProperty(value = " ")
@QueryMethod(field = "age", method = QueryMethodConstant.GT)
private String minAge;
@ApiModelProperty(value = " ")
@QueryMethod(field = "age", method = QueryMethodConstant.LT)
private String maxAge;
}
16.먼저 데이터베이스 에 테스트 데 이 터 를 몇 개 추가 한 다음 에 프로젝트 를 시작 한 후에 http://localhost:8080/swagger-ui.html 을 엽 니 다.
insert into `t_user`(`id`,`name`,`age`) values
(1,' ',20),
(2,' ',20),
(3,' ',20),
(4,' ',35),
(5,' ',18);
17.위의 그림 에 따라 조회 조건 을 입력 한 다음 에'Execute'를 클릭 하여 실행 합 니 다.
돌아 오 는 Response body:
{
"code": "0",
"msg": " !",
"data": {
"records": [
{
"id": 5,
"name": " ",
"age": 18
},
{
"id": 1,
"name": " ",
"age": 20
},
{
"id": 2,
"name": " ",
"age": 20
},
{
"id": 3,
"name": " ",
"age": 20
}
],
"total": 4,
"size": 10,
"current": 1,
"orders": [
{
"column": "age",
"asc": true
}
],
"optimizeCountSql": true,
"hitCount": false,
"countId": null,
"maxLimit": null,
"searchCount": true,
"pages": 1
}
}
위의 반환 결 과 를 통 해 알 수 있 듯 이 우리 가 조건 부 정렬 을 가 진 페이지 조회 기능 은 ok!!!이 박문 을 다 읽 어 주 셔 서 감사합니다. 질문 이 있 으 면 댓 글 을 달 아 주세요.전체 코드 클릭 하여 전체 코드 팩 다운로드 을 동봉 합 니 다.
Spring Boot 통합 Mybatis Plus 와 Swagger 2 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Spring Boot 통합 Mybatis Plus 와 Swagger 2 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.