@Qiery 註解

  • 使用@Query自定義查詢

    1. 查詢可以聲明在Repository方法中,擺脫像命名查詢那樣的約束,將查詢直接在相應的接口方法中聲明,就更爲清晰
  • 列子

@Query("SELECT p FROM Person p where p.id = (SELECT MAX(p2.id) FROM Person p2)")
    Person getMaxIdPerson();
  • 傳參方式
    1. 使用佔位符 ?1 ?2
    2. 命名參數傳遞 :屬性名 ,此時在方法上需要@Param(”屬性名”)
    3. 如果@Query中又LIKE關鍵字,後面的參數或後面的參數加上%,這樣在參數傳遞時可不加%
@Query("SELECT P FROM Person p where name = ?1 and email = ?2")
    List<Person> testQueryAnnotationParamasl(String name, String email);

@Query("SELECT P FROM Person p where p.name = :name And p.email = :email")
    List<Person> testQueryAnnotationParamasl2(@Param("email") String email, @Param("name") String name);
@Query("SELECT P FROM Person p where p.name like %?1% or p.name like %?2%")
    List<Person> testQueryAnnotationParamasl3(String email, String name);
  • 可指定本地查詢,只要設置nativeQuery爲true
@Query(value = "SELECT count(id) FROM jpa_person ", nativeQuery = true)
    long testQuery();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章