valid简单使用

1.简介

用于数据校验

2.基本使用

  1. 导包

    <!--valid-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
        <version>2.7.0</version>
    </dependency>
    
  2. 实体类添加验证

    package com.rokned.mypro.po.bo;
    
    import com.rokned.mypro.po.EduExperience;
    import com.rokned.mypro.po.HeathInfo;
    import com.rokned.mypro.po.LanguageAbility;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import javax.validation.constraints.*;
    import java.io.Serializable;
    import java.util.Date;
    import java.util.List;
    
    /**
     * @Author: rokned
     * 学生信息传输实体
     */
    @Data
    @NoArgsConstructor
    public class StuInfoDto implements Serializable {
        /**
         * 自增主键
         */
        @ApiModelProperty("自增主键")
        private Integer id;
    
        /**
         * 学生主键
         */
        @ApiModelProperty(value = "学生主键", required = true)
        @NotNull
        private Integer sid;
    
        /**
         * 姓名
         */
        @ApiModelProperty(value = "姓名", required = true)
        @NotBlank
        private String name;
    
        /**
         * 年龄
         */
        @ApiModelProperty(value = "年龄", required = true)
        @NotNull
        @Min(value = 18)
        @Max(value = 60)
        private Integer age;
    
        /**
         * 性别
         */
        @ApiModelProperty(value = "性别", required = true)
        @NotBlank
        private String sex;
    
    
        /**
         * 婚姻状况 1表示已婚,0表示未婚
         */
        @ApiModelProperty("婚姻状况 1表示已婚,0表示未婚")
        private Integer marital;
    
        /**
         * '籍贯'
         */
        @ApiModelProperty("籍贯")
        private String nativePlace;
    
        /**
         * 报道时间
         */
        @ApiModelProperty("报道时间")
        private Date registerTime;
    
        /**
         * 期望薪资范围,最低
         */
        @ApiModelProperty("期望薪资范围,最低")
        @Min(0)
        private Integer expectedSalaryLow;
    
        /**
         * 期望薪资范围,最高
         */
        @ApiModelProperty("期望薪资范围,最高")
        @Max(99999)
        private Integer expectedSalaryHigh;
    
        /**
         * 最高学历
         */
        @ApiModelProperty("最高学历")
        private String eduBg;
    
        /**
         * 毕业学校
         */
        @ApiModelProperty("毕业学校")
        private String eduSchool;
    
        /**
         * 毕业时间
         */
        @ApiModelProperty("毕业时间")
        private Date eduTime;
    
        /**
         * 毕业专业
         */
        @ApiModelProperty("毕业专业")
        private String eduMajor;
    
        /**
         * 联系方式
         */
        @ApiModelProperty(value = "联系方式", required = true)
        @NotNull
        @Pattern(regexp = "1(3|4|5|6|7|8|9)[0-9]{9}")
        private String phone;
    
        /**
         * 紧急联系人
         */
        @ApiModelProperty("紧急联系人")
        private String emergencyContact;
    
        /**
         * 紧急人联系方式
         */
        @ApiModelProperty("紧急人联系方式")
        @Pattern(regexp = "1(3|4|5|6|7|8|9)[0-9]{9}")
        private String emerencyPhone;
    
        /**
         * 身份证
         */
        @ApiModelProperty(value = "身份证", required = true)
        @NotNull
        @Pattern(regexp = "/(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/")
        private String idCard;
    
        /**
         * 现居地
         */
        @ApiModelProperty("现居地")
        private String address;
    
        /**
         * 微信号
         */
        @ApiModelProperty("微信号")
        private String wechat;
    
        /**
         * 邮箱
         */
        @ApiModelProperty("邮箱")
        @Email
        private String email;
    
        /**
         * 身份证复印件,1表示有,0表示无
         */
        @ApiModelProperty("身份证复印件,1表示有,0表示无")
        @Min(0)
        @Max(1)
        private Integer isIdCard;
    
        /**
         * 毕业证书复印件,1表示有,0表示无
         */
        @ApiModelProperty("毕业证书复印件,1表示有,0表示无")
        @Min(0)
        @Max(1)
        private Integer isDiploma;
    
        /**
         * 填表时间
         */
        @ApiModelProperty("填表时间")
        private Date fillingTme;
    
        /**
         * 教育经历
         */
        @ApiModelProperty("教育经历")
        List<EduExperience> eduExperiences;
    
        /**
         * 语言能力
         */
        @ApiModelProperty("语言能力")
        List<LanguageAbility> languageAbilities;
    
        /**
         * 工作经历
         */
        @ApiModelProperty("工作经历")
        List<WorkExperienceDto> workExperienceDtoList;
    
        /**
         * 健康状况
         */
        @ApiModelProperty("健康状况")
        @NotNull
        HeathInfo heathInfo;
    
        private static final long serialVersionUID = 1L;
    
    }
    
  3. 控制层添加验证@Validated,@Valid

    package com.rokned.mypro.controller;
    
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import com.rokned.mypro.mapper.KxUserExInfoMapper;
    import com.rokned.mypro.po.bo.StuInfoDto;
    import com.rokned.mypro.result.Code;
    import com.rokned.mypro.result.PageResult;
    import com.rokned.mypro.service.StuService;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.validation.BindingResult;
    import org.springframework.validation.annotation.Validated;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
    
    import javax.validation.Valid;
    import java.util.List;
    
    /**
     * @Author: rokned
     * 学生Controller
     */
    
    @RestController
    @RequestMapping("/stu")
    @Api(tags = "学生信息管理")
    @Validated
    public class StuController {
        @Autowired
        private StuService stuService;
    
        /**
         * 添加
         * @param stuInfoDto
         * @return
         */
        @PostMapping
        @ApiOperation(value = "插入一条信息")
        public PageResult save(@RequestBody @Valid StuInfoDto stuInfoDto, BindingResult bindingResult) {
            System.out.println("stu save...");
            return stuService.save(stuInfoDto);
        }
    
        /**
         * 删除
         * @param sid
         * @return
         */
        @DeleteMapping("{sid}")
        @ApiOperation(value = "删除一条信息")
        public PageResult delete(@PathVariable Integer sid) {
            System.out.println("stu delete..." + sid);
            return stuService.delete(sid);
        }
    
        /**
         * 更新
         * @param stuInfoDto
         * @return
         */
        @PutMapping
        @ApiOperation(value = "更新一条信息")
        public PageResult update(@RequestBody @Valid StuInfoDto stuInfoDto, BindingResult bindingResult) {
            System.out.println("stu update...");
            return stuService.update(stuInfoDto);
        }
    
        /**
         * 根据sid获取
         * @param sid
         * @return
         */
        @GetMapping("{sid}")
        @ApiOperation(value = "根据sid查找信息")
        public PageResult getBySid(@PathVariable Integer sid) {
            System.out.println("stu getByUserCode..." + sid);
            return stuService.getBySid(sid);
        }
    
        /**
         * 获取全部
         * @return
         */
        @GetMapping
        @ApiOperation(value = "查询所有信息")
        public PageResult getAll() {
            System.out.println("stu getAll...");
            return stuService.getAll();
        }
    }
    
  4. 全局异常处理配置异常

    /**
     * @Author: rokned
     * 全局异常处理
     */
    @ControllerAdvice
    public class GlobalExceptionHandler {
        @ExceptionHandler({ConstraintViolationException.class})
        @ResponseBody
        public PageResult handle(){
            return PageResult.error(Code.Code_400,"参数错误");
        }
    }
    
  5. 运行测试即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值