公司使用的是如今流行的SpringBoot,數據庫方面使用的是SpringData+JPA+Hibernate。這幾天用的最多的就是用JPA進行查詢了,簡單的查詢很簡單,網上查一查就有一堆方案,直到遇到分頁查詢的時候出了問題。
網上查到的大多都是使用EntityManager經過人工拼接sql來查詢的,可是今天從導師那裏學到了一手,在Repository中使用@Query註解便可。
代碼以下前端
public interface StudentRepository extends JpaRepository<Student,Integer> { @Query( value = "SELECT * FROM student" + " WHERE (age = ?1 OR ?1 IS NULL)" + " WHERE (id = ?2 OR ?2 IS NULL)" + " WHERE (first_name = ?3 OR ?3 IS NULL)" + " ORDER BY ?#{#pageable}", countQuery = "SELECT COUNT(1) FROM " + "SELECT * FROM student" + " WHERE (age = ?1 OR ?1 IS NULL)" + " WHERE (id = ?2 OR ?2 IS NULL)" + " WHERE (first_name = ?3 OR ?3 IS NULL)" + " ORDER BY ?#{#pageable}", nativeQuery = true ) Page<Student> findByAgeAndIdAndFirstName(Integer age, Integer id, String firstName, Pageable pageable); }
最後的Pageable
能夠使用PageRequest
來建立。sql
這裏其實主要仍是使用了SQL的語法,SQL仍是有不少須要去學的。