@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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章