Spring Boot 통합 Mybatis Plus 와 Swagger 2 의 튜 토리 얼 상세 설명

앞에서 말 했 듯 이 만약 에 초보 자라 면 제 튜 토리 얼 과 코드 에 따라 구축 하 십시오.(글 끝 에 완전한 프로젝트 코드 팩 을 첨부 할 것 입 니 다.제 가 제공 한 전체 프로젝트 코드 팩 을 직접 다운로드 한 후에 스스로 체험 할 수 있 습 니 다!)초보 자 를 배려 하기 위해 스티커 가 많 습 니 다.인내심 을 가지 고 강 좌 를 따라 오 세 요.이 프로젝트 데모 가 도움 이 되 었 으 면 좋 겠 습 니 다.만약 에 쓴 것 이 관심 과 칭찬 을 해 주 십시오.감사합니다!
외국어:이것 은 제 가 처음으로 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 2
1.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 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기