QuerydslPredicate与PagingAndSortingRepository

时间:2016-01-10 20:28:21

标签: spring pagination predicate querydsl

我不熟悉QueryDslPredicatePagingAndSortingRepository

我想在findAll请求中使用谓词以及排序和分页。怎么办呢?

QTestOrder qTestOrder = QTestOrder.testOrder;
        BooleanExpression isUser = qTestOrder.user.eq(userDAO.getUserByPhone(Long.parseLong(params.getFirst(Constant.USER))));
        BooleanExpression isId = qTestOrder.id.eq(new Long(params.getFirst(Constant.ID)));
        BooleanExpression isStatus = qTestOrder.testStatus.eq(testStatusDAO.getByRank(Integer.parseInt(params.getFirst(Constant.STATUS))));

        testOrderRepo.findAll(isUser.or(isId).or(isStatus),qTestOrder.orderCreationTime.desc());

所以上面返回我的testOrders列表,我现在想要使用下面的查询进行分页。如何根据查询返回所有分页和排序的用户。有什么方法可以解决这个问题或解决方法吗?

        Pageable page = new PageRequest(p, Constant.DEFAULT_PAGE_SIZE);
        Page<TestOrder> l = testOrderRepo.findAll(page);

1 个答案:

答案 0 :(得分:0)

您可以在存储库界面中实现broadcasts_viewers(broadcast_id)。此接口提供了具有以下签名的方法:

QueryDslPredicateExecutor<T>

返回与给定Page<T> findAll(Predicate predicate, Pageable pageable); 匹配的实体页面。

假设您有域实体,比如Predicate,那么您可以定义TestOrder,如下所示:

TestOrderRepository

最后你可以:

public interface TestOrderRepository extends QueryDslPredicateExecutor<TestOrder> {}