phu*_*ong 8 pagination mongodb spring-data
我想用Spring Data Mongo实现分页.有许多教程和文档建议使用PagingAndSortingRepository,如下所示:
StoryRepo extends PagingAndSortingRepository<Story, String>{}
Run Code Online (Sandbox Code Playgroud)
因此,因为PagingAndSortingRepository为分页查询提供api,我可以使用它:
Page<Story> story = storyRepo.findAll(pageable);
Run Code Online (Sandbox Code Playgroud)
我的问题是这里的findAll方法实际上是在哪里实现的?我需要自己编写实现吗?实现StoryRepo的StoryRepoImpl需要实现这个方法吗?
Sim*_*mon 16
您不需要像自动装配Spring对象PagingAndSortingRepository那样实现该方法,它会自动为您实现该方法.
请注意,由于您使用的是Mongodb,因此您可以扩展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);
Run Code Online (Sandbox Code Playgroud)
我通过编写自己的实现来实现它,如下所示:
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;
Run Code Online (Sandbox Code Playgroud)
我正在使用spring data&mongodb,使用mongo模板查询数据.
小智 5
在 Spring Data 中,您使用 Spring data 使用的命名约定创建一个接口并添加一个方法,框架将生成该方法的实现。为了实现分页,我在我的存储库中创建了这个方法声明:
public interface PersonRepository extends MongoRepository<Person, ObjectId> {
Page<Person> findByName(String name, Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的服务中,我这样调用这个方法:
Page<Person> persons = personRepository.findByName("Alex", PageRequest.of(0, 100));
Run Code Online (Sandbox Code Playgroud)
这里,页面将包含 100 个元素。
该方法由特定于商店的类实现。对于 Spring Data JPA 模块,它是SimpleJpaRepository
. 您通常让 DI 容器为这些存储库接口创建实例。使用 Spring,您可以通过使用@EnableJpaRepository
JavaConfig 类或
<jpa:repositories base-package="com.acme.repositories" />\n
Run Code Online (Sandbox Code Playgroud)\n\n这将为存储库创建一个代理实例,以便您可以将其注入到您的客户端中:
\n\nclass MyClient {\n\n @Inject\n public MyClient(PersonRepository repository) {\n \xe2\x80\xa6\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
21388 次 |
最近记录: |