Java spring使用Pageable、Example和Sort访问JPA存储库的示例
我到处搜索Spring代码的示例,同时使用这3个JPA概念,在查询时非常重要:Java spring使用Pageable、Example和Sort访问JPA存储库的示例,java,spring,jpa,filtering,pageable,Java,Spring,Jpa,Filtering,Pageable,我到处搜索Spring代码的示例,同时使用这3个JPA概念,在查询时非常重要: 过滤-使用示例,示例匹配器 分页-使用可分页的(或类似) 排序-使用排序 到目前为止,我只看到了同时使用其中两个的示例,但我需要同时使用所有这些示例。你能给我举个例子吗 多谢各位 PS:提供了分页和排序的示例,但没有过滤。以下是一个示例,在标题属性上搜索新闻,并进行分页和排序: 实体: @Getter @塞特 @实体 公共类新闻{ @身份证 私人长id; @纵队 私有字符串标题; @纵队 私有字符串内容;
- 过滤-使用
,示例
示例匹配器
- 分页-使用可分页的
(或类似)
- 排序-使用
排序
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的优秀答案不同的解决方案),那就太好了,欢迎你在自己的答案中发布。(我看不出有什么理由会有人被你的问题冒犯。我看它被否决了——也许是因为它没有太多具体的细节)。