This commit is contained in:
wu 2024-11-11 08:10:22 +08:00
parent 11aab361e1
commit 7b8e45ded1

View File

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