动态本机Sql查询Spring Data中的分页

时间:2016-12-19 14:15:12

标签: java sql spring spring-mvc spring-data

我希望将整个WHERE子句作为REST参数并将其提供给PagingAndSortingRepository。春天有可能吗?我知道我可以用本机sql做这个,但我也想使用spring的分页功能。我认为QueryDsl对我不起作用,因为where子句是无限的,我必须在那种情况下解析所有参数。

要求:

localhost:8080/users?page=0&size=5&where=(firstname+eq+john+and+lastname+neq+terry)or(email+eq+john@gmail.com)

我希望它像......:

interface UserDAO extends PagingAndSortingRepository<User, Integer> {   

@Query(value = "SELECT * FROM User ?2", 
        countQuery = "SELECT count(*) FROM User ?2", 
        nativeQuery = true)
List<User> getUserList(Pageable pageable, String filter);  
}        

简而言之,我需要使用请求的filter子句更改上述代码中的WHERE参数。任何想法都将不胜感激。

谢谢..

1 个答案:

答案 0 :(得分:1)

您还需要定义计数查询,如示例50所示。来自文档:

  

请注意,我们目前不支持对本机查询执行动态排序,因为我们必须操纵声明的实际查询,我们无法对本机SQL可靠地执行此操作。 但是,您可以通过自己指定计数查询来使用原生查询进行分页。

(强调我的)