Java对象数据校验工具类VerifyUtils怎么实现
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"Java对象数据校验工具类VerifyUtils怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
广州大一互联网络科技有限公司
重生之互联网科技帝国
互联网科技保险
科技与互联网
互联网和科技创新
互联网下的科技发展
科技互联网公司logo
唐信互联网科技 大连
上游互联网科技
深圳期待互联网科技
华脉科技工业互联网产品
新兴科技互联网创新大赛颁奖典礼
恒生互联网科技业指数调整周期
深圳无忧互联网科技
35岁以上互联网科技行业
全球科技与互联网公司市值变化
科技互联网经济论坛
深圳互联网科技园地址
杭州融税互联网科技有限公司
上海旺乐尼互联网科技有限公司
广东猪兼强互联网科技有限公司
金融科技 互联网金融
奇酷互联网科技公司
奔汉互联网科技
火传媒上海互联网科技
华脉科技工业互联网产品
成都互联网科技公司工作好不好
深圳市罗太互联网科技有限公司
互联网金融科技名词解释
广东工业互联网大赛深圳学泰科技