Spring統合(ページング)結果(新規)

54321 ワード

背景
    、        ,               ,       。         ,
        URL  ,       ,         ,      ,       。

デザイン
  • は、コードの一般的なフォーマット
  • を返す.
    {
         
    	#       
    	success: true,
    	#      
    	code: 200,		
    	#     
    	data: Object
    	#       
    	message: "",
    }
    

    ぶんせき
  • code:応答状態コード
  • コード区間
    を選択します.
    意味
    1**
    100-199
    情報サーバは要求を受信し、要求者が操作を継続する必要がある.
    2**
    200-299
    成功したリクエストが正常に受信され処理されました
    3**
    300-399
    リダイレクトには、リクエストを完了するためのさらなる操作が必要です.
    4**
    400-499
    クライアント・エラー・リクエストに構文エラーが含まれているか、完了できません.
    5**
    500-599
    サーバエラーサーバ処理中にエラーが発生しました
  • よく見られるHTTPステータスコード:
      200 -     ;
      301 -   (   )        URL;
      404 -      (   )   ;
      500 -        。
    
  • 結果を一括して返す
    @Getter
    public enum ResultCodeEnum {
         
        SUCCESS(true, 200,"  "),
        ERROR(false, 500,"  "),
        UNKNOWN_REASON(false, 20001, "    "),
        BAD_SQL_GRAMMAR(false, 21001, "sql    "),
        JSON_PARSE_ERROR(false, 21002, "json    "),
        PARAM_ERROR(false, 21003, "     "),
        FILE_UPLOAD_ERROR(false, 21004, "      "),
        EXCEL_DATA_IMPORT_ERROR(false, 21005, "Excel      ");
        private Boolean type;
    
        private Integer code;
    
        private String message;
    
        private ResultCodeEnum(Boolean type, Integer code, String message) {
         
            this.type = type;
            this.code = code;
            this.message = message;
        }
    }
    
    
    
    @Data
    @ApiModel(value = "        ")
    public class Result<T> implements Serializable {
         
    
        private static final long serialVersionUID = 1L;
    
        @ApiModelProperty(value = "    ")
        private Boolean state = true;
    
        @ApiModelProperty(value = "    ")
        private T data;
    
        @ApiModelProperty(value = "    ")
        private String msg;
    
        @ApiModelProperty(value = "       ")
        private long count;
    
        @ApiModelProperty(value = "   ")
        private long code;
    
        public Result() {
         
    
        }
    
        Result(long code, boolean success, String message, long count, T data) {
         
            this.code = code;
            this.state = success;
            this.msg = message;
            this.data = data;
            this.count = count;
        }
    
        public static <T> Result<T> ok(T data) {
         
            try {
         
                Result<T> result = new Result<T>(ResultCodeEnum.SUCCESS.getCode(), ResultCodeEnum.SUCCESS.getType(), ResultCodeEnum.SUCCESS.getMessage(), 1, data);
    
                return result;
            } catch (Exception ex) {
         
                return error(ex);
            }
        }
    
        public static <T> Result<T> error(Exception ex) {
         
            String format = "Message: %s, StackTrace: %s, Suppressed: %s, Cause: %s, Class: %s ";
    
            String msg = String.format(format, ex.getMessage(), ex.getStackTrace(), ex.getSuppressed(),
                    ex.getCause(), ex.getClass());
    
            return error(msg);
        }
    
        public static <T> Result<T> error(String message) {
         
            Result<T> result = new Result<T>( ResultCodeEnum.ERROR.getCode(), ResultCodeEnum.ERROR.getType(), message, 0, null);
            result.count = 0;
            return result;
        }
    }
    
    

    統合ページング結果
  • 伝参
  • @Data
    public class PagingOptions implements Serializable {
         
    
        private static final long serialVersionUID = 1L;
    
        @ApiModelProperty("    ")
        private Integer pageIndex;
        @ApiModelProperty("    ")
        private Integer pageSize;
        @ApiModelProperty("    ")
        private List<PagingSort> sorts;
        @ApiModelProperty("    ")
        private List<PagingFilter> filters;
    
    }
    
    @Data
    public class PagingFilter implements Serializable {
         
    
        private static final long serialVersionUID = 1L;
    
        @ApiModelProperty("     ")
        private String field;
        @ApiModelProperty("  ")
        private String op;
        @ApiModelProperty(" ")
        private String value;
    
    }
    
    @Data
    public class PagingSort implements Serializable {
         
    
        private static final long serialVersionUID = 1L;
    
        @ApiModelProperty("     ")
        private String field;
        @ApiModelProperty("  ")
        private String sort;
    
    }
    
  • パッケージmybatisPlus
  • @Data
    public class PageQuery<T>  {
         
        private static final long serialVersionUID = 1L;
    
        /**
         *      
         */
        private Page<T> page;
        /**
         *     
         */
        private int currPage = 1;
        /**
         *     
         */
        private int limit = 10;
    
        private QueryWrapper<T> queryWrapper;
    
        private BaseMapper baseMapper;
    
    
        public PageQuery(PagingOptions pagingOptions, BaseMapper baseMapper) {
         
            this.baseMapper = baseMapper;
            //      
            this.page = new Page<>(pagingOptions.getPageIndex(), pagingOptions.getPageSize());
    
            //     mapper    
            this.queryWrapper = new QueryWrapper<T>();
    
            //  wrapper   
            if (pagingOptions.getFilters() != null) {
         
                for (PagingFilter filter : pagingOptions.getFilters()) {
         
    
                    if (StringUtils.isEmpty(filter.getField()) || StringUtils.isEmpty(filter.getOp())) {
         
                        continue;
                    }
    
                    String strOp = filter.getOp().trim();
                    String field = filter.getField().trim();
                    String term = filter.getValue();
    
                    switch (strOp) {
         
                        case "eq":
                            this.queryWrapper.eq(field, term);
                            break;
                        case "ne":
                            this.queryWrapper.ne(field, term);
                            break;
                        case "lt":
                            this.queryWrapper.lt(field, term);
                            break;
                        case "le":
                            this.queryWrapper.le(field, term);
                            break;
                        case "gt":
                            this.queryWrapper.gt(field, term);
                            break;
                        case "ge":
                            this.queryWrapper.ge(field, term);
                            break;
                        case "cn":
                            this.queryWrapper.like(field, term);
                            break;
                        case "nu":
                            this.queryWrapper.isNull(field);
                            break;
                        case "nn":
                            this.queryWrapper.isNotNull(field);
                            break;
                        case "in":
                            List<String> result = Arrays.asList(term.split(","));
                            this.queryWrapper.in(field, result);
                            break;
                    }
    
                }
            }
    
            if (pagingOptions.getSorts() != null) {
         
    
                for (PagingSort sort : pagingOptions.getSorts()) {
         
    
                    if (StringUtils.isEmpty(sort.getField()) || StringUtils.isEmpty(sort.getSort())) {
         
                        continue;
                    }
                    String strOp = sort.getSort().trim();
    
                    switch (strOp) {
         
                        case "asc":
                            this.queryWrapper.orderByAsc(sort.getField());
                            break;
                        case "desc":
                            this.queryWrapper.orderByDesc(sort.getField());
                            break;
                    }
                }
            }
        }
    }
    
    
  • は、
  • を一括して返す.
    @Data
    @ApiModel(value = "          ")
    public class PagingResult<T> implements Serializable {
         
    
        private static final long serialVersionUID = 1L;
    
        @ApiModelProperty(value = "    ")
        private Boolean state = true;
    
        @ApiModelProperty(value = "    ")
        private List<T> data;
    
        @ApiModelProperty(value = "    ")
        private String msg;
    
        @ApiModelProperty(value = "       ")
        private long count;
    
        @ApiModelProperty(value = "   ")
        private long code;
    
        PagingResult(long code, boolean success, String message, long count, List<T> data) {
         
            this.setCode(code);
            this.setState(success);
            this.setMsg(message);
            this.setData(data);
            this.setCount(count);
        }
    
        public static <T> PagingResult<T> ok(PageQuery<T> pageQuery, BaseMapper<T> mapper) {
         
            try {
         
    
                IPage<T> page = mapper.selectPage(pageQuery.getPage(), pageQuery.getQueryWrapper());
    
                PagingResult<T> result = new PagingResult<T>(ResultCodeEnum.SUCCESS.getCode(), ResultCodeEnum.SUCCESS.getType(), ResultCodeEnum.SUCCESS.getMessage(),
                        page.getTotal(), page.getRecords());
    
                return result;
            } catch (Exception ex) {
         
                return error(ex);
            }
        }
    
        public static <T> PagingResult<T> error(Exception ex) {
         
            String format = "Message: %s, StackTrace: %s, Suppressed: %s, Cause: %s, Class: %s";
    
            String msg = String.format(format, ex.getMessage(), ex.getStackTrace(), ex.getSuppressed(),
                    ex.getCause(), ex.getClass());
    
            return error(msg);
        }
    
        public static <T> PagingResult<T> error(String message) {
         
            PagingResult<T> result = new PagingResult<T>(ResultCodeEnum.ERROR.getCode(), ResultCodeEnum.ERROR.getType(), message, 0, null);
    
            return result;
        }
    }