W celu uzyskania dalszych wyjaśnień możesz nawet używać obu jednocześnie.
MongoRepository
to tylko warstwa abstrakcji, jak MongoTemplate
, ale z prostszym interfejsem.
Jeśli okaże się, że wykonywanie jakiejś operacji jest zbyt skomplikowane ze Springiem tworzenie-zapytania
i jakoś nie chce używać @Query
(na przykład, potrzebujesz podpowiedzi typu IDE podczas konstruowania zapytań), możesz rozszerzyć MongoRepository
i użyj MongoTemplate
jako mechanizm zapytania.
Najpierw rozszerzamy nasze repozytorium o nasz niestandardowy interfejs.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Następnie zadeklaruj interfejs.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
A następnie zaimplementuj nasze niestandardowe repozytorium. Możemy automatycznie połączyć MongoTemplate
tutaj i użyj go do przeszukiwania bazy danych.
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);
}
}
Na koniec używamy ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}