解决swagger实体类多层泛型 不显示mybatisPlus Page类实体属性的问题
自定义返回工具类
@ApiModel(description = "接口出参对象")
@Data
@Accessors(chain = true)
public class ResultDTO<T> implements Serializable {
@ApiModelProperty(value = "是否请求成功")
private Boolean result;
@ApiModelProperty(value = "提示信息")
private String message;
@ApiModelProperty(value = "编码/状态")
private Integer code;
@ApiModelProperty(value = "数据")
private T data;
@ApiModelProperty(value = "额外")
private Object extra;
@ApiModelProperty(value = "表名", hidden = true)
@JsonIgnore
private String onlTable;
public ResultDTO() {
this("ok");
}
public ResultDTO(String message) {
this(true, message, 200);
}
public ResultDTO(boolean result, String message) {
this(result, message, 200);
}
public ResultDTO(boolean result, String message, int code) {
this(result, message, code, null);
}
public ResultDTO(boolean result, String message, int code, T data) {
this(result, message, code, data, null);
}
public ResultDTO(boolean result, String message, int code, T data, Object extra) {
this.result = result;
this.message = message;
this.code = code;
this.data = data;
this.extra = extra;
}
public ResultDTO message(String message) {
this.message = message;
return this;
}
public ResultDTO data(T data) {
this.data = data;
return this;
}
public ResultDTO extra(String extra) {
this.extra = extra;
return this;
}
}
自定义分页实体类MyPage
@ApiModel(value="MyPage", description="分页对象")
@Data
public class MyPage<T> {
@ApiModelProperty(value = "数据")
private List<T> records;
@ApiModelProperty(value = "总数")
private long total;
@ApiModelProperty(value = "每页总长度")
private long size;
@ApiModelProperty(value = "当前页数")
private long current;
@ApiModelProperty(value = "排序字段信息")
private List<OrderItem> orders;
@ApiModelProperty(value = "是否查询总数")
private Boolean searchCount;
@ApiModelProperty(value = "总页数")
private long pages;
}
使用方法
@ApiOperation(value = "分页列表")
@GetMapping("/list")
public ResultDTO<MyPage<SysDict>> list(
@RequestParam(defaultValue = "1",required = false) @ApiParam(value = "当前页面") int pageNum,
@RequestParam(defaultValue = "20",required = false) @ApiParam(value = "每页显示的数量") int pageSize){
QueryWrapper<SysDict> queryWrapper = new QueryWrapper<SysDict>();
queryWrapper.orderByDesc("create_time");
return ResultDTO.success().data(xxx.page(new Page<>(pageNum, pageSize),queryWrapper));
}
只需要修改返回参数为 ResultDTO<MyPage<Object.>>
显示效果
{
"result": false,
"message": "",
"code": 0,
"data": {
"records": [
{
"id": "",
"dictName": "",
"dictCode": "",
"description": "",
"delFlag": 0,
"createBy": "",
"createTime": "",
"updateBy": "",
"updateTime": "",
"type": 0
}
],
"total": 0,
"size": 0,
"current": 0,
"orders": [
{
"column": "",
"asc": true
}
],
"searchCount": false,
"pages": 0
},
"extra": {}
}
截图