@Validated自定义实现多种校验(分组校验)

当对一个User对象进行新增和修改时。

当新增时,对于id可以为null;当为修改时,id却不能为空。而我们在接口用对象User对前端数据进行接收。

此时的Validated校验就会出现冲突,为了解决这种冲突,此时则对Validated进行分组校验。

实体类:

package org.sang.model.entity;


import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
public class User {

    @NotNull(groups = {valid2.class})
    private Integer id;

    @NotNull(groups = {valid1.class,valid2.class})
    @Length(min = 6,max = 32,groups = {valid1.class,valid2.class})
    private String name;

    @NotNull(groups = {valid1.class,valid2.class})
    private String sex;

    @NotNull(groups = {valid1.class,valid2.class})
    @Length(min = 0,max = 100,groups = {valid1.class,valid2.class})
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * 新增时候参数校验
     */
    public interface valid1{

    }

    /**
     * 修改时参数校验
     */
    public interface valid2{

    }

}

上面通过定义了两个interface,valid1和valid2,通过groups参数配置在参数校验信息上,相当于定义了两个检验方式,有的参数参与一种校验,有的参与两个校验方式。

2.Controller层控制传参校验方式

import org.sang.model.entity.User;
import org.sang.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;


@RestController(value = "/user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 新增用户
     * @param user
     * @return
     */
    @RequestMapping("/insert")
    @ResponseBody
    public User insert(@RequestBody @Validated(User.valid1.class) User user){
        return userService.insert(user);
    }

    /**
     * 修改用户
     * @param user
     * @return
     */
    @RequestMapping("/update")
    @ResponseBody
    public boolean update(@RequestBody @Validated(User.valid2.class) User user){
        return userService.update(user);
    }

}

如上面代码可以控制每个方法传参时参与那种参数校验,可以根据实际业务场景,定义更多的interface去实现不同的参数校验方式。

转自https://blog.csdn.net/m0_37899908/article/details/112436992

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值