自定义注解

/*** 自定义注解*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldLabel {// 字段中文String label();// 字段顺序int order() default 0;// 分组标识String group() default "default";}

解析自定义注解:

 // 1、获取当前类中声明的所有字段 2、字段有FieldLabel注解 3、通过group过滤 4、通过order排序List<Field> sortedFields = Arrays.stream(vo.getClass().getDeclaredFields()).filter(f -> f.isAnnotationPresent(FieldLabel.class)).filter(f -> groups.length == 0 || Arrays.asList(groups).contains(f.getAnnotation(FieldLabel.class).group())).sorted(Comparator.comparingInt(f -> f.getAnnotation(FieldLabel.class).order())).collect(Collectors.toList());

应用1:获取excel表头

 // 构建固定列头List<List<String>> head = new ArrayList<>();for (Field field : sortedFields) {FieldLabel annotation = field.getAnnotation(FieldLabel.class);head.add(Collections.singletonList(annotation.label()));}

应用2:转换指定分组的字段,将VO转为 List<Map<String, String>>:


@Slf4j
public class EntityConverter {public static List<Map<String, String>> convertToJson(Object obj, String... groups) {if (obj == null) {return Collections.emptyList();}List<Field> fields = Arrays.stream(obj.getClass().getDeclaredFields()).filter(f -> f.isAnnotationPresent(FieldLabel.class)).filter(f -> groups.length == 0 || Arrays.asList(groups).contains(f.getAnnotation(FieldLabel.class).group())).sorted(Comparator.comparingInt(f -> f.getAnnotation(FieldLabel.class).order())).collect(Collectors.toList());List<Map<String, String>> items = new ArrayList<>();for (Field field : fields) {try {// 允许通过反射访问私有(private)或其他受限成员field.setAccessible(true);FieldLabel annotation = field.getAnnotation(FieldLabel.class);Object value = field.get(obj);Map<String, String> item = new LinkedHashMap<>();item.put("label", annotation.label());item.put("value", value != null ? value.toString() : "");items.add(item);} catch (IllegalAccessException e) {log.error("字段转换出错,字段:{},错误:{}", field.getName(), e.getMessage(), e);throw exception(ProjectErrorCode.ENTITY_CONVERTER_ERROR, e.getMessage());}}return items;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87226.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87226.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87226.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:network:socket 绑定到一个interface,如果删除这个interface会怎么样?

最近碰到一个问题,应用绑定到了一个GRE的interface,如下socket绑定到了bond10这个interface。 ss -anp | grep bond udp UNCONN 0 0 100.0.5.113%bond10:5061 0.0.0.0:* users

OpenGL 3D编程大师基础之路:从几何体到物理引擎

引言&#xff1a;开启3D编程之旅 欢迎来到令人兴奋的3D编程世界&#xff01;本教程将带您从OpenGL基础开始&#xff0c;逐步掌握3D渲染的核心技术&#xff0c;最终实现一个包含物理模拟的完整3D场景。我们将探索几何体创建、光照系统、纹理映射、变换操作和碰撞检测等关键主题…

解决往GitHub提交大文件报错问题

前言 GitHub仓库单个文件的推荐大小不能超过50MB&#xff08;仅限于警告&#xff09;&#xff0c;但绝对不能超过100MB&#xff08;拒绝提交&#xff09; 问题 人总有手贱的时候&#xff0c;一不小心往Git仓库拷贝大文件并尝试push到GitHub&#xff0c;发现报错后才意识到问…

PostgreSQL基于归档日志的持续恢复测试

测试环境&#xff1a; os: linux PG: 17.4 src ip: 192.168.100.51 dst ip: 192.168.100.138 src: PGDATA/home/postgres174/pgdata dst: PGDATA/data/174/pgdata_standby 归档路径&#xff1a; 192.168.100.138 /data/174/archivedir 测试流程&#xff1a; 1. 主库(…

Linux——内核——网络协议

Linux网络协议栈是Linux内核中实现网络通信的核心组件&#xff0c;其设计遵循分层架构&#xff0c;支持多种网络协议和功能。以下从协议栈的分层结构、关键组件、工作流程、数据包处理机制、优化与调试等方面进行详尽阐述&#xff1a; 一、协议栈的分层结构 Linux网络协议栈基…

vue | 插件 | 移动文件的插件 —— move-file-cli 插件 的安装与使用

问题&#xff1a;想将打包生成的 dist 文件下的样式相关文件&#xff0c;进行移动。 解决&#xff1a;在 npm 上找写好的兼容操作系统的包 move-file-cli 插件 &#xff0c;用于移动文件 move-file-cli 插件的安装与使用 安装&#xff1a;npm install move-file-cli --save-d…

多个单片机简单通讯框架

文章目录 一、场景描述二、框架搭建设计思路通信协议设计2号单片机通讯框架框架优化建议 三、2号单片机的通讯框架如何处理消息丢失和重传&#xff1f;消息丢失与重传机制设计改进的通信协议重传机制实现关键机制说明优化建议 一、场景描述 有3个单片机进行通讯&#xff0c;分…

如何在服务区已有预装镜像的情况下管理自己的包

你的需求非常明确&#xff1a;希望利用 NGC 镜像预装的主环境包&#xff08;如 PyTorch、CUDA&#xff09;&#xff0c;同时能独立管理自己额外安装的包&#xff0c;避免直接污染主环境。以下是几种解决方案&#xff0c;按推荐度排序&#xff1a; 方案 1&#xff1a;虚拟环境复…

JavaWeb之Servlet(2)RequestResponse..

文章目录 1 Request和Response的概述2 Request对象2.1 Request继承体系2.2 Request获取请求数据2.2.1 获取请求行数据2.2.2 获取请求头数据2.2.3 获取请求体数据1-3小结2.2.4 获取请求参数的通用方式请求参数和请求数据的区别问题案例分析问题解决 2.3 IDEA快速创建Servlet2.4 …

将 h264+g711a存为 mp4文件,记录

将 h264g711a存为 mp4文件&#xff0c;记录 &#x1f4cc; 关键问题&#xff1a;MP4 不原生支持 G.711A MP4 容器格式 不原生支持 G.711&#xff08;包括 A-law&#xff0c;也就是 G.711A&#xff09;音频&#xff0c;所以不能直接将 G.711A 音频封装进 MP4 文件中。常见的做法…

【Elasticsearch】全文检索 组合检索

全文检索 1.全文检索1.1 准备测试数据1.2 案例分析1.2.1 match&#xff08;分词检索&#xff09;1.2.2 match_phrase&#xff08;短语检索&#xff09;1.2.3 match_phrase_prefix&#xff08;短语前缀匹配&#xff09;1.2.4 multi_match&#xff08;多字段匹配&#xff09;1.2.…

信号处理学习——文献精读与code复现之TFN——嵌入时频变换的可解释神经网络(上)

​​​​​​​​​​​​​​TFN: An interpretable neural network with time-frequency transform embedded for intelligent fault diagnosis - ScienceDirecthttps://www.sciencedirect.com/science/article/abs/pii/S0888327023008609?via%3Dihub &#xff08;看看玲娜贝…

Panda3D实战:从入门到精通

Panda3D基础实例 创建一个简单的Panda3D场景,加载一个模型并显示: from direct.showbase.ShowBase import ShowBaseclass MyApp(ShowBase):def __init__(self):ShowBase.__init__(self)self.scene = self.loader.loadModel("models/environment")self.scene.repa…

Galera集群:高可用MySQL同步复制方案

目录 Galera Cluster 概述 核心架构与组件 WSREP API Group Communication System (GCP) 同步复制机制 复制流程详解 冲突检测算法 关键特性 多主架构实现 强一致性保障 自动成员管理 性能优化策略 并行复制实现 流控机制详解 批处理与压缩 部署与监控 详细配…

MybatisPlus-03.快速入门-常用注解

一.MP的原理 mp究竟是如何知道我们需要对哪个表进行操作&#xff0c;并且又是如何知道要操作哪些字段的呢&#xff1f;这是因为mp使用到了反射机制&#xff0c;我们在定义mapper接口时使其继承了BaseMapper接口&#xff0c;并指定了BaseMapper接口泛型为User&#xff0c;因此m…

ABAP+记录一个BDC的BUG修改过程

问题背景&#xff1a; 业务顾问反馈在使用BDC 进行MEQ1进行供应商配额时&#xff0c;由于以前录屏时用例只有3行数据&#xff0c;导致现在有5行数据的时候&#xff0c;代码仍然只获取了3行数据进行录入&#xff0c;现在需要更改代码&#xff0c;使其按照实际情况自动调整行数。…

github上传代码步骤(http)

github上传步骤&#xff08;http&#xff09; 之前github上传不了代码&#xff0c;总是报错。后面发现自己用的ssh上传需要秘钥&#xff0c;现在我介绍一个最简单的http上传方法&#xff08;虽然没有ssh安全。。。但简单嘛~&#xff09;&#xff0c;现在我做个例子&#xff0c…

深入理解Nginx-以实际http通信例子改造带ssl配Nginx的实战-优雅草卓伊凡|麻子

深入理解Nginx-以实际http通信例子改造带ssl配Nginx的实战-优雅草卓伊凡|麻子 SSL/TLS在Nginx中的底层实现原理 Nginx的SSL模块架构 Nginx通过ngx_http_ssl_module模块实现SSL/TLS功能&#xff0c;该模块基于OpenSSL库构建。根据Nginx官方文档&#xff0c;SSL模块在Nginx架构…

AT6558R-5N32介绍

作为单芯片SOC方案&#xff0c;AT6558R在片上整合了射频前端、数字基带处理器与32位RISC CPU&#xff0c;并具备电源管理能力。该芯片兼容北斗、GPS、GLONASS三大卫星导航系统&#xff0c;可实现多模协同定位‌。 主要特征 支持 BDS/GPS/GLONASS 多系统联合定位 和单系统独立定…

“对象创建”模式之原型模式

目录 Prototype 原型模式动机 Motivation引例模式定义结构 Structure要点总结 Prototype 原型模式 动机 Motivation 在软件系统中&#xff0c;经常面临着“某些结构复杂的对象”的创建工作&#xff1b;由于需求的变化&#xff0c;这些对象经常面临着剧烈的变化&#xff0c;但…