一、场景
在开发过程中,经常需要对自定义组装的类进行字段校验,因此专门分装了一个对实体类属性格式验证的方法。
二、工具代码
/**
* 功能:实体属性格式验证
* <p>
* ──────────────────────────────────────────
* version 变更日期 修改人 修改说明
* ------------------------------------------
* V1.0.0 2022/8/15 CHY 初版
* ──────────────────────────────────────────
*
* @author CHY
*/
public class ValidatorUtil {
private static ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
/**
* 实体属性格式验证(一次性返回所有验证结果)
*
* @param t 实体集
* @param <T> 实体
* @return 返回结果
*/
public static <T> String validates(T t) {
Validator validator = factory.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(t);
List<String> messageList = new ArrayList<>();
for (ConstraintViolation<T> constraintViolation : constraintViolations) {
messageList.add(constraintViolation.getMessage());
}
String error = "";
if (messageList != null && messageList.size() > 0) {
error = StringUtils.join(messageList, ";");
}
return error;
}
}
三、实体类代码
@Data
public class User {
@Length(max = 10)
@NotBlank(message = "用户姓名不能为空")
private String name;
@ApiModelProperty("手机号")
@Length(min = 1, max = 12)
@NotBlank(message = "手机号码不能为空")
@Pattern(regexp = "^1(3\\d|4[5-9]|5[0-35-9]|6[567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$",message = "手机号码格式不正确")
private String mobile;
@ApiModelProperty("身份证号")
@NotBlank(message = "身份证号不能为空")
private String idCard;
}
四、如何使用?
public class ValidatorUtilTest {
public static void main(String[] args) {
User user = new User();
user.setName("");
user.setMobile("4561253");
user.setIdCard("11111111111111111111111111111111111111");
String validates = validates(user);
if (!StringUtil.isEmpty(validates)) {
// TODO 在实际开发中,此处可以替换成抛出异常
System.out.println("错误信息如下:" + validates);
}
}
}
五、测试结果


本文介绍了一种用于Java开发的实体类字段校验工具,通过`ValidatorUtil`类实现对自定义实体类属性的格式验证。该工具利用Hibernate Validator进行验证,并一次性返回所有错误信息。示例中展示了如何对`User`实体的姓名、手机号和身份证号进行校验,校验规则包括长度限制和正则表达式匹配。在实际应用中,验证失败的信息可以抛出异常或进行相应处理。
&spm=1001.2101.3001.5002&articleId=126350205&d=1&t=3&u=bb585e4538114bb29e34a98be78ef358)
14万+

被折叠的 条评论
为什么被折叠?



