Mysql
 sql >> база данни >  >> RDS >> Mysql

Spring Boot JPA:Подаване на множество стойности за един и същ параметър (JPQL)

Тъй като @Query трябва да се коригира по време на компилиране с помощта на JPQL или дори собствената заявка ще направи подобни неща трудни за изпълнение, особено по безопасен за типа начин.

Така че разбирам, че търсите JPQL решение, но това е страхотна възможност да научите и да се възползвате от Specification интерфейс и CriteriaQuery на JPA. Точно за това е.

Разгледайте следното хранилище:

public interface Table1Repository            // to use specifications in queries 
        extends JpaRepository<Table1, Long>, JpaSpecificationExecutor<Table1> {

    @SuppressWarnings("serial")
    public static Specification<Table1> multiLikeColumn1(List<String> likePatterns) {
        return new Specification<Table1>() {
            @Override
            public Predicate toPredicate(Root<Table1> root, CriteriaQuery<?> query,
                                            CriteriaBuilder criteriaBuilder) {
                Path<String> column1 = root.get("column1");
                // create a Predicate for each "column1 like 'xy%az%' you need
                List<Predicate> predicates = likePatterns.stream()
                    .map(likePattern -> criteriaBuilder.like(column1, likePattern))
                    .collect(Collectors.toList());
                // then "concatenate" list of likes with "OR"
                return criteriaBuilder.or(predicates.toArray(new Predicate[]{}));
            }
        };
    }

}

Може да изглежда малко сложно, но всъщност не е, когато се запознаете с него. Използването е просто, като:

@Resource
private Table1Repository repo;
repo.findAll(Table1Repository.multiLikeColumn1(Arrays.asList("%X%","%Z%")))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализация от MYSQL до MYSQLI

  2. mysql групиране по седмица

  3. MYSQL Вмъкване там, където не съществува с PDO

  4. Къде да съхранявате качените файлове (звук, снимки и видео)

  5. Избиране на уникални редове в набор от две възможности