当前位置: 首页 > 知识库问答 >
问题:

使用Spring boot CrudRepository筛选数据

弓胜泫
2023-03-14
public interface FlightRepository extends CrudRepository<Flight, Long> {
  List<Flight> findAll(Pageable pageable);
}
Sort sort = new Sort(direction, ordering);
PageRequest page = new PageRequest(xoffset, xbase, sort);

return flightRepo.findAll(page);

谢谢你的提示!

共有1个答案

刁跃
2023-03-14

您在上面的注释中对必须为每一个参数组合创建查询方法的关注,另一种方法是通过Criteria API或使用QueryDSL使用规范模式,这将解决您的问题。

下文概述了这两种方法,以回应以下关切:

对于较大的应用程序,查询方法的数量可能会增加,这是因为查询定义了一组固定的标准。为了避免这两个缺点,如果您能够提出一组可以动态组合以构建查询的原子谓词,这不是很酷吗?

public interface UserRepository extends PagingAndSortingRepository<User, Long>, QueryDslPredicateExecutor<User> {
    public List<User> findAll(Predicate predicate);
}
repository.findAll(QUser.user.address.town.eq("Glasgow").and(QUser.user.gender.eq(Gender.M)));

repository.findAll(QUser.user.address.town.eq("Edinburgh"));

repository.findAll(QUser.user.foreName.eq("Jim"));

更新

从Spring Data module的Gosling版本开始,现在支持从web应用程序中的HTTP参数自动生成谓词。

https://spring.io/blog/2015/09/04/what-s-new-in-spring-data-release-gosling#querydsl-web-support

 类似资料:
  • 我的页面中有一个名为“search_table”的DataTable。我在表中有一个附加的标题行,它具有不同的筛选选项(dropdown、text、date_pickers)。对于日期列,我有两个datepicker,一个用于min,一个用于max。我可以根据datepickers为datatable筛选数据,但有一个问题: 当我选择一个日期时,我的表中的所有行都消失了,我必须点击其中的一个标题(

  • 我有一个带有FireBaseRecyclerAdapter的RecyclerView。当用户开始输入SearchView时,我想用一个名称列表填充RecycerView。 也是对查询进行忽略的方法吗?

  • 我希望筛选Pandas Dataframe以从两种不同类型的属性中选择数据: 但是我不能使用这个选项,或者为此,你能给我一个如何做的例子吗。

  • ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 所以我知道我没有正确使用or语句,有没有办法做到这一点?

  • 选择数据表格头部 图标,可以选择表格内字段进行复杂条件筛选; 筛选结果在表格内显示; 选择: 选择图层内字段名称 约束条件: 对选择的该字段指定条件,条件一般有等于、小于、大于等(数值型字段)、或者包含、不包含等(文本型字段)... 约束值:输入需要限制的值 可以支持多种条件同时筛选、或者任选其一条件满足;

  • 问题 你想要根据布尔条件来筛选数组。 解决方案 使用 Array.filter (ECMAScript 5): array = [1..10] array.filter (x) -> x > 5 # => [6,7,8,9,10] 在 EC5 之前的实现中,可以通过添加一个筛选函数扩展 Array 的原型,该函数接受一个回调并对自身进行过滤,将回调函数返回 true 的元素收集起来。 # 扩展 A