2013-12-04 3 views
3

Я хочу реализовать разбиение на страницы с данными Spring Mongo. Есть много учебников и документы предлагают использовать PagingAndSortingRepository, как это:Данные весны mongo pagination

StoryRepo extends PagingAndSortingRepository<Story, String>{} 

И это потому, что PagingAndSortingRepository предоставляет API для запроса с подкачкой, я могу использовать это нравится:

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

Мой вопрос, где на самом деле этот метод findAll здесь реализован? Должен ли я сам написать его реализацию? StoryRepoImpl, который реализует StoryRepo, должен реализовать этот метод?

+0

Как преобразовать список на страницу весной Монго данные пагинацией? – Prateek

+0

Вы можете получить список через page.getContent() – Ash

ответ

1

Метод реализуется специальным классом магазина. Для модуля JPA Spring Data это SimpleJpaRepository. Обычно вы позволяете контейнеру DI создавать экземпляры для этих интерфейсов репозитория. С весной вы бы активировать репозитории Spring Data либо с помощью @EnableJpaRepository по классу JavaConfig или

<jpa:repositories base-package="com.acme.repositories" /> 

Это создаст экземпляр прокси для репо, так что вы можете получить его впрыскивает в ваши клиент:

class MyClient { 

    @Inject 
    public MyClient(PersonRepository repository) { 
    … 
    } 
} 
+0

Как получить LastRecord из mongo с использованием Spring Repository или Query? –

+0

Пожалуйста, создайте новый вопрос. –

6

Я получил это работает, написав свои собственные реализации, что-то вроде этого:

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; 

Я работаю с весенними данными & Монг odb, используя шаблон mongo для запроса данных.

+0

выглядит как query.with (доступно для просмотра); не давая правильной последовательности данных мудрый или посторонний, очень странно ... –

8

Вам не нужно реализовывать метод, как при автообновлении объекта Spring PagingAndSortingRepository, он автоматически реализует этот метод для вас.

Обратите внимание: поскольку вы используете Mongodb, вы можете расширить MongoRepository.

Тогда весной, включите нумерацию страниц с помощью этого:

@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); 
Смежные вопросы