使用 spring data jpa 进行一个复杂 sql 的分页查询,根据实际代码,有几点硬性要求:
- 因为 sql 本身有点复杂,所以使用考虑使用 native query,也就是直接写原生 sql 语句的方式
- 分页搜索条件使用动态查询参数,动态参数的意思是如果某个字段有值,该字段和对应值才会出现在 sql 条件中
- 返回自定义对象
请教下满足上述条件的分页查询使用 spring data jpa 怎么写,谢谢大家。
使用 spring data jpa 进行一个复杂 sql 的分页查询,根据实际代码,有几点硬性要求:
请教下满足上述条件的分页查询使用 spring data jpa 怎么写,谢谢大家。
1
caotian Aug 23, 2019
@Query 应该不好实现这个, 要么试试 entityManager.createNativeQuery 这种原生 sql 查询, 要么根据参数动态生成 specification 查询
|
2
BCy66drFCvk1Ou87 Aug 23, 2019
spring data jpa 可以传入一个 Pageable 做分页,但只有几个简单的属性设置,不适合做复杂的分页查询
|
3
nnnToTnnn Aug 23, 2019
```java
public interface UserRepository extends JpaRepository<User, Long> { @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1", countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1", nativeQuery = true) Page<User> findByLastname(String lastname, Pageable pageable); } ``` 例子如下,话说为啥要使用 nativeQuery ? 其实用 hql 可以完全替代 sql |
4
nnnToTnnn Aug 23, 2019
动态参数 =。= 好吧这个没注意,如果是动态参数的话,可以使用 SpEL 表达式来动态修改注解的值
|