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

Spring Boot JPA:Chuyển nhiều giá trị cho cùng một thông số (JPQL)

Bởi vì @Query cần được sửa tại thời điểm biên dịch bằng cách sử dụng JPQL hoặc thậm chí truy vấn gốc sẽ khiến loại thứ này khó triển khai, đặc biệt là theo cách an toàn.

Vì vậy, tôi nhận ra bạn đang theo đuổi giải pháp JPQL nhưng đây là một cơ hội tuyệt vời để tìm hiểu và tận dụng Specification giao diện và CriteriaQuery của JPA. Đây chính xác là nó dành cho.

Hãy xem kho lưu trữ sau:

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[]{}));
            }
        };
    }

}

Nhìn thì có vẻ hơi phức tạp nhưng thực sự thì không khi bạn làm quen với nó. Cách sử dụng rất đơn giản, như:

@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. NHÓM MySQL THEO DateTime +/- 3 giây

  2. MySQL một câu lệnh để hợp nhất hai bảng

  3. Tên bảng chữ thường MySQL trong Windows Tên chữ hoa trên Unix

  4. Mysql Tạo cơ sở dữ liệu với các ký tự đặc biệt trong tên

  5. Ràng buộc khóa ngoại MySQL, xóa theo tầng