一直以来都用if/else做数据入参的校验,如图:

开始觉得还行,好像什么都能干,用的都挺好的。不过随着项目的不断深入,弊端就逐渐显示了出来,代码太过繁琐,不够简洁,于是涛哥让我们在网上找数据校验的方法,于是找了viladate,开始觉得就那样只能做一下空值的校验,随着深入才发现真香,少废话,上图:



2022-06-13:
start
校验生效时间不能小于当前时间
/**
	 * 校验起始时间是否小于当前时间,起始时间是否大于终止时间
	 * @param effectTime 生效时间
	 */
	public static void checkEffectDate(Date effectTime){
		if (effectTime == null) {
			throw new BusinessException("生效时间不能为空");
		}
		// 获取当前的时间
		Date today = DateUtil.now();
		// compareTo()方法的返回值,第一个时间小于第二个时间返回-1,第一个时间大于第二个时间返回返回1,相等返回0
		int compare = today.compareTo(effectTime);
		// 生效时间小于当前时间,抛出异常
		if (compare > 0) {
			throw new BusinessException(“生效时间不能小于当前时间”);
		}
	}
或者在实体类上添加注解@Future(message="生效时间不能小于当前时间")
end
相关文章:
2024-10-17 start:
controller:
 @PostMapping("/test")
    public TestVo messageUp(@RequestBody @Valid TestPara TestPara) {
        log.info("入参【{}】",TestPara);
        return TestVo.builder()
                    .code(OfficeImMessageVo.SUCCESS)
                    .msg(OfficeImMessageVo.SUCCESS_MSG)
                .build();
    }
TestPara:
/**
 * @author haijin
 * @description: -入参
 */
@Data
public class TestPara {
    /**
     * 32位uuid
     */
    @NotBlank(message = "uuid不能为空")
    @Length(max = 32,min = 32,message = "uuid为32位")
    private String uuid;
}
TestVo:
/**
 * @author haijin
 * @description: 出参
 */
@Data
@Builder
public class TestVo {
    /**
     * 成功标识
     */
    public static final String SUCCESS = "0";
    /**
     * 失败标识
     */
    public static final String FAIL = "1";
    /**
     * 成功
     */
    public static final String SUCCESS_MSG = "成功";
    /**
     * 响应结果编码
     */
    private String code;
    /**
     * 响应结果编码内容
     */
    private String msg;
}
end