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

Spring数据mongo分页

乌杰
2023-03-14

我想用Spring Data Mongo实现分页。有很多教程和文档建议使用PagingAndSorting Repository,如下所示:

StoryRepo extends PagingAndSortingRepository<Story, String>{}

因此,因为PagingAndSorting Repository提供了用于分页查询的api,我可以像这样使用它:

Page<Story> story = storyRepo.findAll(pageable);

我的问题是这里的findAll方法实际上是在哪里实现的?我需要自己编写它的实现吗?实现StoryRepo的StoryRepoImpl需要实现这个方法吗?

共有3个答案

高宏峻
2023-03-14

在SpringData中,您使用Spring数据使用的命名约定创建一个接口并添加一个方法,框架将生成该方法的实现。为了实现分页,我在存储库中创建了这个方法声明:

public interface PersonRepository extends MongoRepository<Person, ObjectId> {
    Page<Person> findByName(String name, Pageable pageable);
}

然后,在我的服务中,我这样调用此方法:

Page<Person> persons = personRepository.findByName("Alex", PageRequest.of(0, 100));

这里,页面将包含100个元素。

韦绍晖
2023-03-14

我通过编写自己的实现让它工作起来,就像这样:

List<Story> stories = null;

Query query = new Query();
query.with(pageable);

stories = getTemplate().find(query, Story.class);

long total = getTemplate().count(query, Story.class);
Page<Story> storyPage = new PageImpl<Story>(stories, pageable, total);

return storyPage;

我正在处理Spring数据

贝研
2023-03-14

您不需要实现该方法,因为当您自动连接Spring对象分页和排序存储库时,它会自动为您实现该方法。

请注意,由于您使用的是Mongob,因此您可以扩展MongoRepository。

然后在Spring,使用以下命令启用分页:

@RequestMapping(value="INSERT YOUR LINK", method=RequestMethod.GET)
  public List<Profile> getAll(int page) {
    Pageable pageable = new PageRequest(page, 5); //get 5 profiles on a page
    Page<Profile> page = repo.findAll(pageable);
    return Lists.newArrayList(page);
 类似资料:
  • 我正在使用Spring数据管理我的MongoDB数据库。 在一个集合中,我有两个ObjectId字段,_id和另一个引用另一个集合中的实例的字段。 我的收藏的类是这样的: 通过这样指定的类,我可以成功地将“外键”作为$OID插入。 问题是我得到了以下绑定错误: 对象“Collection A”中字段“Collection BID”上的字段错误:拒绝值[];代码[TypeMismatch.Colle

  • 我有一个Spring Boot和嵌入式Mongo DB的项目,我也想查找存储在那里的数据。我学习了本教程https://springframework.guru/spring-boot-with-embedd-mongoDB/

  • 我正在玩Spring数据Mongo查询,并想知道字段属性参数。以下是我从文档中获得的示例: 问题是:在{“firstname”:1,“lastname”:1}中,1的含义是什么?

  • 文档结构-消息{obj_id,post_id,message_time,message_text}和@key是obj_id。 问题声明:我只想要fetch all the data包含post_id:'anything'并基于message_time进行排序,并且每次都想在结果中进行自定义分页。现在,我正在根据以下链接实现代码:https://stackoverflow.com/a/1007753

  • 我有一个使用Spring Data MongoDB 1.4.2完美运行的项目。我试图更新到1.5.0,但在自动布线(摘录)过程中出现此错误: 原因:组织。springframework。数据mongodb。果心指数MongopersistentyIndexResolver$CyclicPropertyReferenceException:在路径“Filter”的类型“Filter”中找到字段“ru

  • 看看有没有人能帮上忙。 我想使用Spring数据mongodb的存储库,我想使用查询注释来过滤按值A=10或A=20查找的数据 很明显,“试着做一个AND,我需要一个OR。 有什么想法吗?