为了账号安全,请及时绑定邮箱和手机立即绑定

Spring数据查询dsl如何添加order by?

Spring数据查询dsl如何添加order by?

繁华开满天机 2021-10-27 10:02:31
我是 Querydsl 的新手,我正在使用 Spring 数据和 Querydsl 来制作动态过滤器,我使用接口:QueryDslPredicateExecutor所以我可以使用不同的实体字段过滤数据,现在我想在我的查询中添加“order by”基于BooleanExpression。这是我的代码:QPersonData _personInventory = QPersonData.personData;BooleanBuilder query = new BooleanBuilder();query.and(_personInventory.status.eq(status));然后我使用查询调用了我的存储库接口:personInventoryRepository.findAll(query, pageable);我的问题是如何根据实体上的不同字段将“order by”应用于查询对象?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

最后感谢大家这个解决方案对我有用:


 QPersonData _personInventory = QPersonData.personData;

 BooleanBuilder query = new BooleanBuilder(); 


 query.and(_personInventory .status.eq(status));

 personInventoryRepository.findAll(query,0, Integer.MAX_VALUE,new QSort(_personInventory.field1.asc(),_personInventory.field2.asc()));   


查看完整回答
反对 回复 2021-10-27
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您可以为页面信息添加排序:


 Sort sort = new Sort.Order(Sort.Direction.ASC,"filedname").nullsLast();

 PageRequest pageRequest = new PageRequest(pageNumber, pageSize, sort);

 personInventoryRepository.findAll(query,pageRequest); 


查看完整回答
反对 回复 2021-10-27
?
翻阅古今

TA贡献1780条经验 获得超5个赞

在您的存储库界面中添加一个方法


findByStatus(status)

然后使用如下代码块


Pageable pageable = new PageRequest(offset, limit, Direction.DESC, "updatedAt");

repository.findByStatus(status, pageable);

如果您使用 spring boot 2.0.0 => 然后使用方法


PageRequest.of(....)


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信