Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana kita bisa menggunakan salah satu validasi di boot musim semi?

Anda perlu menulis anotasi khusus untuk ini dan digunakan di kelas

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

Penerapan Anotasi Khusus

@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 {};
}

Dan Validator Anotasi Khusus

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. Simbol yang harus saya waspadai untuk injeksi SQL

  2. Mengapa Anda tidak boleh menggunakan mysql_fetch_assoc lebih dari 1 kali?

  3. Mysql CREATE DEFINER

  4. Lebih baik menggunakan tanggal nol '0000-00-00 00:00:00' atau NULL di MySQL?

  5. codeigniter :mendapatkan data antara dua tanggal di mysql menggunakan php