1.简介
用于数据校验
2.基本使用
-
导包
<!--valid--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>2.7.0</version> </dependency>
-
实体类添加验证
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; }
-
控制层添加验证@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(); } }
-
全局异常处理配置异常
/** * @Author: rokned * 全局异常处理 */ @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler({ConstraintViolationException.class}) @ResponseBody public PageResult handle(){ return PageResult.error(Code.Code_400,"参数错误"); } }
-
运行测试即可