解决swagger实体类多层泛型 不显示mybatisPlus Page类实体属性的问题

该博客介绍了如何处理Swagger中实体类多层泛型导致MybatisPlusPage类属性不显示的问题。通过自定义返回工具类ResultDTO和分页实体类MyPage,实现了接口返回数据的定制化展示。在使用方法中展示了如何在分页查询操作中应用这些自定义类,最终达到预期的显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决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": {}
}

截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值