jpa学习5--spring data jpa 中的JpaRepository 使用 @Query 注解
来源:互联网 发布:网络优化公司智搜宝 编辑:程序博客网 时间:2024/06/09 15:07
jpa学习5--spring data jpa 中的JpaRepository 使用 @Query 注解
1.使用@Query自定义查询,
•这种查询可以声明在 Repository方法中,摆脱像命名查询那样的约束,将查询直接在相应的接口方法中声明,结构更为清晰,这是Springdata 的特有实现。
如:
//WHERE lastName LIKE ?% AND id < ?List<Person> getByLastNameStartingWithAndIdLessThan(String lastName, Integer id);调用:
List<Person> persons = personRepsotory.getByLastNameStartingWithAndIdLessThan("X", 10);System.out.println(persons);例子:
//WHERE lastName LIKE %? AND id < ?List<Person> getByLastNameEndingWithAndIdLessThan(String lastName, Integer id);//WHERE email IN (?, ?, ?) OR birth < ?List<Person> getByEmailInAndBirthLessThan(List<String> emails, Date birth);//WHERE a.id > ?List<Person> getByAddress_IdGreaterThan(Integer id);
//查询 id 值最大的那个 Person//使用 @Query 注解可以自定义 JPQL 语句以实现更灵活的查询@Query("SELECT p FROM Person p WHERE p.id = (SELECT max(p2.id) FROM Person p2)")Person getMaxIdPerson();2.带参数查询:
2.1.使用占位符. from后的Person是实体类名而并非表名!
//为 @Query 注解传递参数的方式1: 使用占位符. @Query("SELECT p FROM Person p WHERE p.lastName = ?1 AND p.email = ?2")List<Person> testQueryAnnotationParams1(String lastName, String email);
2.2.命名参数的方式. from后的Person是实体类名而并非表名!
//为 @Query 注解传递参数的方式1: 命名参数的方式. @Query("SELECT p FROM Person p WHERE p.lastName = :lastName AND p.email = :email")List<Person> testQueryAnnotationParams2(@Param("email") String email, @Param("lastName") String lastName);3.like查询中的%%
//SpringData 允许在占位符上添加 %%. @Query("SELECT p FROM Person p WHERE p.lastName LIKE %?1% OR p.email LIKE %?2%")List<Person> testQueryAnnotationLikeParam(String lastName, String email);//SpringData 允许在占位符上添加 %%. @Query("SELECT p FROM Person p WHERE p.lastName LIKE %:lastName% OR p.email LIKE %:email%")List<Person> testQueryAnnotationLikeParam2(@Param("email") String email, @Param("lastName") String lastName);4.修改,删除注意事项:
//可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作. 注意: JPQL 不支持使用 INSERT//在 @Query 注解中编写 JPQL 语句, 但必须使用 @Modifying 进行修饰. 以通知 SpringData, 这是一个 UPDATE 或 DELETE 操作//UPDATE 或 DELETE 操作需要使用事务, 此时需要定义 Service 层. 在 Service 层的方法上添加事务操作. //默认情况下, SpringData 的每个方法上有事务, 但都是一个只读事务. 他们不能完成修改操作!@Modifying@Query("UPDATE Person p SET p.email = :email WHERE id = :id")void updatePersonEmail(@Param("id") Integer id, @Param("email") String email);
0 0
- jpa学习5--spring data jpa 中的JpaRepository 使用 @Query 注解
- jpa学习4--spring data jpa 中的JpaRepository 方法定义规范
- spring-data-JPA使用JpaRepository注解自定义SQL查询数据库多表查询
- Spring Data JPA 使用@Query注解执行原始Sql
- Spring Data JPA 常用注解 @Query、@NamedQuery
- Spring data jpa 之 Query注解
- @Query注解的用法(Spring Data JPA)
- @Query注解的用法(Spring Data JPA)
- @Query注解的用法(Spring Data JPA)
- Spring Data JPA进阶-@Query注解
- @Query注解的用法(Spring Data JPA)
- @Query注解的用法(Spring Data JPA)
- Spring Data JPA(3)--JpaRepository和JpaSpecificationExecutor的结合使用
- Spring Data JPA @Query
- spring data jpa @Query注解中delete语句报错 : @Modifying注解的使用
- Spring JPA @Query学习
- spring data jpa @Query注解中delete语句报错
- spring-data-jpa @Query注解中delete语句报错
- 【Java基础笔记】面向对象基础
- 【C#】事件与观察者模式
- 《算法分析与设计》Week 2
- 算法设计与应用基础作业第一周
- vim如何查找vimfiles
- jpa学习5--spring data jpa 中的JpaRepository 使用 @Query 注解
- Intellij使用总结
- hdu 1556 Color the ball (线段树+代码详解)
- LeetCode:Search Insert Position
- 第三周:88. Merge Sorted Array
- 支持向量机(SVM)(三)----核函数及正则化
- 国外程序员整理的Java资源
- MySQL · 引擎特性 · InnoDB IO子系统
- WebService(3):JAX-WS