hibernate-validate的基本使用

169 阅读2分钟

1. hibernate-validate注解

Constraint详细信息
@Valid被注释的元素是一个对象,需要检查此对象的所有字段值
@Null被注释的元素必须为 null
@NotNull被注释的元素必须不为 null
@AssertTrue被注释的元素必须为 true
@AssertFalse被注释的元素必须为 false
@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past被注释的元素必须是一个过去的日期
@Future被注释的元素必须是一个将来的日期
@Pattern(value)被注释的元素必须符合指定的正则表达式
@Email被注释的元素必须是电子邮箱地址
@Length被注释的字符串的大小必须在指定的范围内
@NotEmpty被注释的字符串的必须非空
@Range被注释的元素必须在合适的范围内
@NotBlank被注释的字符串的必须非空
@URL(protocol=,host=, port=,regexp=, flags=)被注释的字符串必须是一个有效的url
@CreditCardNumber被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性

2. pom.xml 引入依赖

<!-- hibernate-validator -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.3.6.Final</version>
</dependency>

3. user 实体类

/**
 * @Auther: csp1999
 * @Date: 2020/12/17/21:07
 * @Description: 用户实体类
 */
@Table(name = "tb_user") // tk_mapper 注解
public class User {
    /**
     * 主键id
     */
    @Id // tk_mapper 注解
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id;

    /**
     * 用户名(4-30位)
     *
     * hibernate-validator注解:被注释的字符串的大小必须在指定的范围内
     * min:最小长度
     * max:最大长度
     * message:不符合条件时提示信息
     */
    @Length(min = 4,max = 30,message = "用户名必须在4-30位之间")
    private String username;

    /**
     * 密码
     */
    @JsonIgnore // 对象序列化为json 字符串时,忽略该属性,这样就可以不暴漏密码到前端
    @Length(min = 4,max = 12,message = "用户密码必须在4-12位之间")
    private String password;

    /**
     * 电话
     *
     * hibernate-validator注解:被注释的元素必须符合指定的正则表达式
     * regexp = "^1[356789]\\d{9}$" : 满足电话号码的格式
     */
    @Pattern(regexp = "^1[356789]\\d{9}$",message = "电话格式不合法")
    private String phone;

    /**
     * 创建时间
     */
    private Date created;

	// setter/getter 方法略
}

4. controller


/**
 * 用户注册
 *
 * @param user 用户
 * @param code 验证码
 */
@PostMapping("/register")
@ResponseBody
public String register(@Valid User user) {
    String msg = userService.register(user);
    return msg;
}