Java spring使用Pageable、Example和Sort访问JPA存储库的示例

Java spring使用Pageable、Example和Sort访问JPA存储库的示例,java,spring,jpa,filtering,pageable,Java,Spring,Jpa,Filtering,Pageable,我到处搜索Spring代码的示例,同时使用这3个JPA概念,在查询时非常重要: 过滤-使用示例,示例匹配器 分页-使用可分页的(或类似) 排序-使用排序 到目前为止,我只看到了同时使用其中两个的示例,但我需要同时使用所有这些示例。你能给我举个例子吗 多谢各位 PS:提供了分页和排序的示例,但没有过滤。以下是一个示例,在标题属性上搜索新闻,并进行分页和排序: 实体: @Getter @塞特 @实体 公共类新闻{ @身份证 私人长id; @纵队 私有字符串标题; @纵队 私有字符串内容;

我到处搜索Spring代码的示例,同时使用这3个JPA概念,在查询时非常重要:

  • 过滤-使用
    示例
    示例匹配器

  • 分页-使用可分页的
    (或类似)

  • 排序-使用
    排序

到目前为止,我只看到了同时使用其中两个的示例,但我需要同时使用所有这些示例。你能给我举个例子吗

多谢各位


PS:提供了
分页
排序
的示例,但没有过滤。

以下是一个示例,在标题属性上搜索新闻,并进行分页和排序:

实体:

@Getter
@塞特
@实体
公共类新闻{
@身份证
私人长id;
@纵队
私有字符串标题;
@纵队
私有字符串内容;
}
存储库:

公共接口新闻存储库扩展了JpaRepository{
}
服务

@服务
公共类新闻服务{
@自动连线
私有新闻存储库新闻存储库;
public Iterable getNewsFilteredPaginated(字符串文本、int pageNumber、int pageSize、字符串排序方式、字符串排序方向){
最终新闻=新新闻();
新闻标题(文本);
final ExampleMatcher matcher=ExampleMatcher.matching()
.withIgnoreCase()
.具有忽略路径(“内容”)
.带字符串匹配器(例如,匹配器.字符串匹配器.包含);
返回newsRepository.findAll(例如of(news,matcher),PageRequest.of(pageNumber,pageSize,sortDirection.equalsIgnoreCase(“asc”)?Sort.by(sortBy).ascending():Sort.by(sortBy).descending());
}
}
呼叫示例:

(新闻:newsService.getNewsFilteredPaginated(“你好”,0,10,“标题”,“asc”)){ log.info(news.getTitle()); }
经过进一步研究,最终找到了答案:

public Page<MyEntity> findAll(MyEntity entityFilter, int pageSize, int currentPage){
    ExampleMatcher matcher = ExampleMatcher.matchingAll()
        .withMatcher("name", exact()); //add filters for other columns here
    Example<MyEntity> filter = Example.of(entityFilter, matcher); 
    Sort sort = Sort.by(Sort.Direction.ASC, "id"); //add other sort columns here
    Pageable pageable = PageRequest.of(currentPage, pageSize, sort); 
    return repository.findAll(filter, pageable);
}
publicpagefindall(myentityentityfilter,int pageSize,int currentPage){
ExampleMatcher matcher=ExampleMatcher.matchingAll()
.withMatcher(“name”,exact());//在此处为其他列添加筛选器
示例过滤器=示例(entityFilter,matcher);
Sort Sort=Sort.by(Sort.Direction.ASC,“id”);//在此处添加其他排序列
Pageable Pageable=PageRequest.of(当前页面、页面大小、排序);
返回repository.findAll(过滤器,可分页);
}

假设您没有成功地将第3种技术添加到已经使用其他2种技术的示例中:您在尝试时遇到了什么问题?我没有找到方法,这就是为什么我要问:我想过滤(实体中的许多字段)并在网页中进行分页和排序,但我找不到使用Spring JPA的方法。找到了排序、筛选或分页的示例,但不是所有的示例都在一起是的,您在问题中清楚地说明了这一点。我希望你能为你所面临的任何具体问题提供一些具体的技术细节(例如,a)。如果你找到了一个解决方案(一个与Yann39的优秀答案不同的解决方案),那就太好了,欢迎你在自己的答案中发布。(我看不出有什么理由会有人被你的问题冒犯。我看它被否决了——也许是因为它没有太多具体的细节)。