diff --git a/docs/chapter06.md b/docs/chapter06.md index 78e5fda..d20022e 100644 --- a/docs/chapter06.md +++ b/docs/chapter06.md @@ -261,15 +261,26 @@ JpaRepository接口继承了PagingAndSortingRepository和CrudRepository两个接 - existsById:判断是否存在指定主键的实体。 - flush:立即将持久化上下文的挂起状态写入数据库。 -JpaRepository还支持自定义查询方法,这可以通过在接口中添加自定义方法来实现。自定义查询方法应使用@Query注解,具有灵活性和可扩展性,例如: + +JpaRepository还支持自定义查询方法,这可以通过在接口中添加自定义方法来实现。 + +**通过方法名来定义查询** + +参考[Spring Data JPA方法名命名规则](https://www.jianshu.com/p/1d6f27f675bb) + +**使用@Query注解** + +@Query具有灵活性和可扩展性,例如: ```java public interface UserRepository extends JpaRepository { - @Query("SELECT u FROM User u WHERE u.username = ?1 AND u.age = ?2") - List findByUsernameAndAge(String username, Integer age); + @Query("SELECT u FROM User u WHERE u.name = ?1 AND u.age = ?2") + List findByNameAndAge(String name, Integer age); + + @Query(value="SELECT * FROM User u WHERE u.name Like %:name% AND u.age > :age" , nativeQuery = true) + List findUsers(@Param("name") String username, @Param("age") Integer age); } ``` -以上代码中,定义了一个查询方法findByUsernameAndAge,使用@Query注解指定查询语句。参数值通过?1和?2进行占位并传入,同时需要注意复合查询之间的关系。 ##### Spring Boot项目中JPA的配置