SpringBoot数据校验

x33g5p2x  于2022-02-21 转载在 Spring  
字(4.5k)|赞(0)|评价(0)|浏览(287)

1.pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.6.3</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.yl</groupId>
  12. <artifactId>validation</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>validation</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>11</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-validation</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-web</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-test</artifactId>
  31. <scope>test</scope>
  32. </dependency>
  33. </dependencies>
  34. <build>
  35. <plugins>
  36. <plugin>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-maven-plugin</artifactId>
  39. </plugin>
  40. </plugins>
  41. </build>
  42. </project>

2.实体类,注意:可以不用加ValidationMessages.properties文件,可以直接在message=""地方直接写上报错信息

  1. package com.yl.validation.model;
  2. import com.yl.validation.validation.ValidationGroup1;
  3. import com.yl.validation.validation.ValidationGroup2;
  4. import javax.validation.constraints.*;
  5. import java.io.Serializable;
  6. public class User implements Serializable {
  7. private Integer id;
  8. //校验字符串长度
  9. @Size(min = 3,max = 8,message = "{user.username.size}",groups = ValidationGroup1.class)
  10. private String username;
  11. //非空校验
  12. @NotNull(message = "{user.password.notnull}")
  13. private String password;
  14. //数值范围校验
  15. @DecimalMin(value = "15",message = "{user.age.min}",groups = {ValidationGroup1.class, ValidationGroup2.class})
  16. @DecimalMax(value = "30",message = "{user.age.max}",groups = {ValidationGroup1.class, ValidationGroup2.class})
  17. private Integer age;
  18. //非空校验
  19. @NotNull(message = "{user.email.notnull}")
  20. //邮箱格式校验
  21. @Email(message = "{user.email.pattern}")
  22. private String email;
  23. public Integer getId() {
  24. return id;
  25. }
  26. public void setId(Integer id) {
  27. this.id = id;
  28. }
  29. public String getUsername() {
  30. return username;
  31. }
  32. public void setUsername(String username) {
  33. this.username = username;
  34. }
  35. public String getPassword() {
  36. return password;
  37. }
  38. public void setPassword(String password) {
  39. this.password = password;
  40. }
  41. public Integer getAge() {
  42. return age;
  43. }
  44. public void setAge(Integer age) {
  45. this.age = age;
  46. }
  47. public String getEmail() {
  48. return email;
  49. }
  50. public void setEmail(String email) {
  51. this.email = email;
  52. }
  53. @Override
  54. public String toString() {
  55. return "User{" +
  56. "id=" + id +
  57. ", username='" + username + '\'' +
  58. ", password='" + password + '\'' +
  59. ", age=" + age +
  60. ", email='" + email + '\'' +
  61. '}';
  62. }
  63. }

3.controller

  1. package com.yl.validation.controller;
  2. import com.yl.validation.model.User;
  3. import com.yl.validation.validation.ValidationGroup1;
  4. import com.yl.validation.validation.ValidationGroup2;
  5. import org.springframework.validation.BindingResult;
  6. import org.springframework.validation.ObjectError;
  7. import org.springframework.validation.annotation.Validated;
  8. import org.springframework.web.bind.annotation.PostMapping;
  9. import org.springframework.web.bind.annotation.RequestBody;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import java.util.List;
  12. @RestController
  13. public class UserController {
  14. @PostMapping("/addUser")
  15. public void addUser(@Validated(ValidationGroup2.class) User user, BindingResult result) {
  16. if (result != null && result.hasErrors()) {
  17. List<ObjectError> allErrors = result.getAllErrors();
  18. for (ObjectError objectError : allErrors) {
  19. System.out.println(objectError.getDefaultMessage());
  20. }
  21. }
  22. }
  23. }

4.ValidationMessages.Properties,手动新建放在resources目录下

  1. user.username.size=用户名的长度应为38
  2. user.password.notnull=密码不能为空
  3. user.age.min=年龄最小值为15
  4. user.age.max=年龄最大值为30
  5. user.email.notnull=邮箱不能为空
  6. user.email.pattern=邮箱格式不正确

5.组一

  1. package com.yl.validation.validation;
  2. public interface ValidationGroup1 {
  3. }

6.组二

  1. package com.yl.validation.validation;
  2. public interface ValidationGroup2 {
  3. }

7.测试结果,由于分了组,发现只有年龄校验有效!

相关文章