Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào chúng ta có thể sử dụng một trong hai xác thực trong khởi động mùa xuân?

Bạn cần viết một chú thích tùy chỉnh cho điều này và sử dụng trên lớp

@AtLeastOneNotEmpty(fields = {"name", "phone"})
public class User{

Triển khai chú thích tùy chỉnh

@Constraint(validatedBy = AtLeastOneNotEmptyValidator.class)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface AtLeastOneNotEmpty {

  String message() default "At least one cannot be null";

  String[] fields();

  Class<?>[] groups() default {};

  Class<? extends Payload>[] payload() default {};
}

Và Trình xác thực Chú thích Tùy chỉnh

public class AtLeastOneNotEmptyValidator
    implements ConstraintValidator<AtLeastOneNotEmpty, Object> {

  private String[] fields;

  public void initialize(AtLeastOneNotEmpty constraintAnnotation) {
    this.fields = constraintAnnotation.fields();
  }

  public boolean isValid(Object value, ConstraintValidatorContext context) {

    List<String> fieldValues = new ArrayList<String>();

    for (String field : fields) {
      Object propertyValue = new BeanWrapperImpl(value).getPropertyValue(field);
      if (ObjectUtils.isEmpty(propertyValue)) {
        fieldValues.add(null);
      } else {
        fieldValues.add(propertyValue.toString());
      }
    }
    return fieldValues.stream().anyMatch(fieldValue -> fieldValue!= null);
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để sử dụng các mô hình django có khóa ngoại trong các DB khác nhau?

  2. Hiển thị các ký tự tiếng Nhật từ SQLException.getMessage ()

  3. Lỗi 1215:Không thể thêm ràng buộc khóa ngoại

  4. mysqli_num_rows không hoạt động chính xác

  5. Ecto tạo chỉ mục duy nhất không thành công cho Mysql / Mariadb