SpringJpa学习教程-04注解式查询
@Query
使用:
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where u.email = ?1 and address = ?2")
List<User> findByEmailAndAddress(String email, String address);
@Query("select u from User u where u.name like %?1%")
List<User> findByNameEndsWith(String name);
@Query(value="select * from user where email = ?1", nativeQuery = true)
List<User> findByEmail(String email);
@Query("select u from User u where u.name like ?1")
List<User> findByName(String name, Sort sort);
@Query(value = "select * from user where u.name like %?1% order by ?2", nativeQuery = true)
List<User> findByNameAndOrderByEmail(String name, String email);
}
解释:
第一个查询中的?1
/?2
表示第一个参数和第二个参数的值
第二个模糊查询中,是不会自动添加模糊关键词的,需要手动进行指定添加
第三个使用了原始sql进行查询而不是JPQL
第四个使用JPQL进行Sort排序
第五个使用原生sql进行排序
@Param
直接写死参数的位置,在参数发生变更时,或者重构时,很容易出问题,因此可以通过绑定参数名来作为查询条件
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where u.email = :email and address = :address")
List<User> findByEmailAndAddress(String email, String address);
}