За допълнително обяснение можете дори да използвате и двете едновременно.
MongoRepository
е просто слой на абстракция, като MongoTemplate
, но с по-прост интерфейс.
Ако установите, че извършването на някаква операция е твърде сложно с Spring създаване на заявка
и по някакъв начин не иска да използва @Query
(например, искате подсказка за тип IDE, когато конструирате заявки), можете да разширите MongoRepository
и използвайте MongoTemplate
като механизъм за заявка.
Първо разширяваме нашето хранилище с нашия потребителски интерфейс.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
След това декларирайте интерфейса.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
И след това внедрите нашето персонализирано хранилище. Можем автоматично да свържем MongoTemplate
тук и го използвайте за заявка в базата данни.
public class CustomArticleRepositoryImpl implements CustomArticleRepository {
@Autowired
MongoTemplate mongoTemplate;
@Override
public List<Article> getArticleFilteredByPage(int page, int num) {
return mongoTemplate.findAll(Article.class)
.skip(page * num)
.take(num);
}
}
Накрая използваме ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}