Java对象数据校验工具类VerifyUtils怎么实现
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"Java对象数据校验工具类VerifyUtils怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2025年12月02日Java对象数据校验工具类VerifyUtils怎么实现
本篇内容介绍了"Java对象数据校验工具类VerifyUtils怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
背景介绍
Excel数据导入是很常见的功能,可很多时候客户导入的数据未必能入库,比如字段超长,类型错误……等。在产品经理提出要做数据校验的时候你难道要一个字段一个字段去校验?而且系统有几十张表都需要类似的功能,更何况客户导入的数据成千上万条数据,如果每次提示某个字段错误肯定是不友好的。要求是提示excel某行某些字段发生了什么错误。
1.注解类
import java.lang.annotation.*;/** * @author 郏高阳 * @date 2020/9/2 * @jdk.version 1.8 * @desc javaBean校验注解 */@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Verify { /** * 字段名称 * @return */ String name() default ""; /** * 最大长度 0不校验大于0才生效 * @return */ int maxLength() default 0; /** * 必填 * @return */ boolean required() default false; /** * 是否包含特殊字符 * @return */ boolean specialCharacters() default false; /** * 数字验证 * @return */ boolean number() default false; /** * 正则 * @return */ Regexp regexp() default @Regexp();}/** * @author 郏高阳 * @date 2020/9/2 * @jdk.version 1.8 * @desc 用于校验正则注解类 */public @interface Regexp { String regexp() default ""; String message() default "";}2.校验工具类
import cn.hutool.core.util.NumberUtil;import cn.hutool.core.util.ReUtil;import cn.hutool.core.util.ReflectUtil;import org.apache.commons.lang3.StringUtils;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;/** * @author 郏高阳 * @Type VerifyUtils.java * @date 2020/9/2 * @jdk.version 1.8 * @desc javaBean校验工具类 *///@Verify(maxLength = 10, required = true, number = true)//private String f32;//@Verify(regexp = @Regexp(regexp = "\\w+[\u4E00-\u9FFF]+\\d+", message = "正则不匹配"), specialCharacters = true)//private String f33;public class VerifyUtils { /** * 校验对象 * * @param obj 对象 * @return 错误信息 */ public static List verify(Object obj) { List stringList = new ArrayList<>(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field f : fields) { if (f.isAnnotationPresent(Verify.class)) { StringBuilder stringBuilder = new StringBuilder(); Verify verify = f.getAnnotation(Verify.class); Object object = ReflectUtil.getFieldValue(obj, f.getName()); String value = null; if (object != null) value = object.toString(); if (verify.required()) { if (StringUtils.isBlank(value)) { stringBuilder.append("字段不能为空|"); } } if (StringUtils.isNotBlank(value)) { if (verify.specialCharacters()) { if (value.contains("|") || value.contains("'") || value.indexOf('"') > -1) { stringBuilder.append("包含非法字符|"); } if (value.length() != value.trim().length()) { stringBuilder.append("前后不能包含空格|"); } } if (verify.maxLength() > 0) { if (value.length() > verify.maxLength()) { stringBuilder.append("内容长度超长|"); } } if (verify.number()) { if (!NumberUtil.isNumber(value)) { stringBuilder.append("不是数字类型|"); } } Regexp regexp = verify.regexp(); if (StringUtils.isNotBlank(regexp.regexp())) { boolean isMatch = ReUtil.isMatch(regexp.regexp(), value); if (!isMatch) { stringBuilder.append(regexp.message()).append("|"); } } } if (StringUtils.isNotBlank(stringBuilder.toString())) { String name = verify.name(); if (StringUtils.isBlank(name)) { name = f.getName(); } String message = name + ":" + stringBuilder.substring(0, stringBuilder.toString().length() - 1); stringList.add(message); } } } return stringList; }} 3.测试
目前只做了非空,类型,长度,特殊字符,目前实现的仅仅是为了符合公司业务需要,有需要可自行修改完善
"Java对象数据校验工具类VerifyUtils怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数据
字段
对象
工具
错误
内容
字符
正则
注解
类型
长度
高阳
特殊
功能
客户
数字
时候
更多
知识
提示
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
二胡视频软件开发
服务器丢失的数据恢复
网络安全工程师考研吗
2000怎么导出数据库备份
网络安全警戒
数据库图形的建模
网络安全违法宣传图画
正规网络技术开发不二之选
邮件服务器怎么查
南通车载网络技术口碑推荐
学生的网络安全课件
山东企聚网络技术有限公司
中职规划教材网络安全
海康威视服务器关机命令
数据库注册清理工具
福建商业软件开发价格多少
图片服务器搭建
服务器集群分类
网络安全零密钥特点原理
服务器安全软件哪个好用
服务器植入恶意代码正确做法
2000怎么导出数据库备份
青岛联新网络技术
基金科技创新与互联网的相关性
软件开发网上学
政治新闻网络安全
经管学数据库吗
互联网科技公司的简介
雕龙科技 互联网医院牌照
长城虚拟网络技术