Spring Boot进阶(13):如何优雅获取@ApiModelProperty(value = “序列号“, name = “uuid“)中的value值,附源码

本文介绍了如何在Spring Boot项目中利用反射获取@ApiModelProperty注解的value值,以满足将字段名和中文注释一同返回的需求。通过将对象转换为Map,然后遍历获取注解属性,实现注解信息与字段对应。

1. 前言🔥

        近日bug菌在奋力赶项目,都是日常的接口逻辑实现,论复杂与否,也就论自己是否理解了业务,理解了其实写起来就顺。

        但是论前端有个不想接的活儿,她不想写死表列名,原本返回给她的数据结构是一个对象,key自然是字段名,value为具体的值,比如{"id":"1","name":"张三"},然后需求是要展示一张中文列名的表格,但是给后端而言,这无非是在增加工作量,我本来数据直接从数据库查询而来,这样,我还得替他插入中文注释。

        于是,活从天上来,谁让我是男生呢,那我就想办法给她实现一下吧,照顾一下女孩子,我仔细一下,我是采用对象来接收的,swagger能将对于的字段名 展示中文注释,于是,我的灵感从这里而来。

        需求就是要将字段名对于的中文注释一并返回,比如返回格式:

需求前可得知: 

​{
    "id":"1",
    "name":"张三",
    "age":18
}

​

需求后:

{
    "value":"1",
    "name":"序号"
},
{
    "value":"张三",
    "name":"姓名"
},
package com.arpa.wms.domain.dto; import com.arpa.wms.domain.entity.Attendance; import com.arpa.wms.domain.entity.BasicEntity; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; /** * <p> * 考勤DTO * </p> * * @author du * @since 2024-08-06 */ @Data @ApiModel(value="AttendanceDTO对象", description="考勤") public class AttendanceDTO extends BasicEntity { @ApiModelProperty(value = "唯一标识(varchar(32))") private String code; @ApiModelProperty(value = "日期(date)") private LocalDate date; @ApiModelProperty(value = "时间段(varchar(32))") private String timePeriod; @ApiModelProperty(value = "启用禁用状态(1:启用;2:禁用;)(tinyint(1))") private Integer activeStatus; @ApiModelProperty(value = "出勤人员编码(varchar(255))") private String attendancePersonCode; @ApiModelProperty(value = "出勤人员名称(varchar(255))") private String attendancePersonName; @ApiModelProperty(value = "缺勤人员编码(varchar(255))") private String absencePersonCode; @ApiModelProperty(value = "缺勤人员名称(varchar(255))") private String absencePersonName; @ApiModelProperty(value = "是否可以删除标识") private Integer deleteFlag; @ApiModelProperty(value = "备注(varchar(100))") private String remarks; @ApiModelProperty(value = "创建人名称(varchar(50))") private String createdName; @ApiModelProperty(value = "修改人名称(varchar(50))") private String modifiedName; @ApiModelProperty(value = "机构code(varchar(16))") private String organizationCode; @ApiModelProperty(value = "机构名称(varchar(32))") private String organizationName; @ApiModelProperty(value = "客户ID(bigint)") private Long customerId; @ApiModelProperty(value = "第几,默认第1页") private Integer pageNum=1; @ApiModelProperty(value = "每页条数,默认10条") private Integer pageSize=10; @ApiModelProperty(value = "排序字段") private String sortField; @ApiModelProperty(value = "排序方式") private String sortType; @ApiModelProperty(value = "记录 ID", required = true) private List<String> codes; @ApiModelProperty(value = "禁用启用接口(1:启用;2:禁用)", required = true) private Integer disableAndEnable; @ApiModelProperty(value = "仓库数据桶") private List<String> warehouseBucket; @ApiModelProperty(value = "货主数据桶") private List<String> shipownerBucket; @ApiModelProperty(value = "机构数据桶") private List<String> mechanismBucket; @ApiModelProperty(value = "高级查询参数") private List<HighQueryDTO> highQuery; private String highQuerySql; @ApiModelProperty(value = "过滤SQL主键集合") private List<Long> idList; @ApiModelProperty(value = "过滤SQL集合") private List<String> prepareList; @ApiModelProperty(value = "自定义导出字段") private List<ExportFieldDTO> fieldDTOList; @ApiModelProperty(value = "自定义列表字段名称集合-数据导出用", hidden = true) private List<String> fieldExportList; @ApiModelProperty(value = "自定义列表字段名称集合-数据导出用", hidden = true) private List<String> sqlFieldExportList; @ApiModelProperty(value = "日期-起始") private LocalDateTime dateStart; @ApiModelProperty(value = "日期-结束") private LocalDateTime dateEnd; } 根据我这个实体类 模仿我上面发给你的量校验并处理仓库库位导入数据 写一个批量导入考勤数据的
最新发布
03-20
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug菌¹

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值