Per ulteriori spiegazioni, puoi anche utilizzare entrambi contemporaneamente.
MongoRepository
è solo un livello di astrazione, come MongoTemplate
, ma con un'interfaccia più semplice.
Se hai scoperto che eseguire un qualche tipo di operazione è troppo complicato con Spring creazione-query
e in qualche modo non vuole usare @Query
(ad esempio, vuoi un suggerimento sul tipo IDE quando costruisci le query), puoi estendere il MongoRepository
e usa MongoTemplate
come meccanismo di query.
Per prima cosa estendiamo il nostro repository con la nostra interfaccia personalizzata.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Quindi dichiara l'interfaccia.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
E poi implementa il nostro repository personalizzato. Possiamo autowire il MongoTemplate
qui e usalo per interrogare il database.
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);
}
}
Infine, utilizziamo il ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}