「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战」
1、使用JPQL的方式查询
JPQL概述:
JPQL语言,即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言,它最终会被编译成针对不同底层数据库的 SQL 查询,从而屏蔽不同数据库的差异。JPQL语言的语句可以是 select 语句、update 语句或delete语句,它们都通过 Query 接口封装执行。
jpql详细语法规则待以后补充完整~
使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件,这时就可以使用@Query注解,结合JPQL的语句方式完成查询。
@Query 注解的使用非常简单,只需在方法上面标注该注解,同时提供一个JPQL查询语句即可。
public interface CustomerDao extends
JpaRepository<Customer,Long>,JpaSpecificationExecutor<Customer> {
@Query(value="from Customer")
public List<Customer> findAllCustomer();
@Query(value="from Customer where custName = ?1")
public Customer findCustomer(String custName);
}
说明:
-
@Query:该注解表示执行被标注的方法时,使用自定义的jpql语句方式查询。
-
@Query:?1代表参数的占位符,其中1对应方法中的参数索引,所以在传递参数时需要注意参数顺序。
此外,也可以通过使用 @Query 来执行一个更新操作,为此,我们需要在使用 @Query 的同时,用 @Modifying 来将该操作标识为修改查询,这样框架最终会生成一个更新的操作,而非查询。
@Query(value="update Customer set custName = ?1 where custId = ?2")
@Modifying
public void updateCustomer(String custName,Long custId);
2、使用SQL语句查询
Spring Data JPA同样也支持sql语句的查询,如下:
@Query(value="select * from cst_customer",nativeQuery=true)
public void findSql();
说明:
- nativeQuery:表示是否使用本地sql的方式查询。
明天继续加油!