Zur weiteren Erläuterung können Sie sogar beide gleichzeitig verwenden.
MongoRepository
ist nur eine Abstraktionsschicht, wie MongoTemplate
, aber mit einfacherer Schnittstelle.
Wenn Sie feststellen, dass eine bestimmte Operation mit Spring zu kompliziert ist Abfrageerstellung
, und möchte @Query
(z. B. möchten Sie beim Erstellen von Abfragen einen IDE-Typhinweis), können Sie das MongoRepository
erweitern und verwenden Sie MongoTemplate
als Abfragemechanismus.
Zuerst erweitern wir unser Repository mit unserer benutzerdefinierten Schnittstelle.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Deklarieren Sie dann die Schnittstelle.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
Und implementieren Sie dann unser benutzerdefiniertes Repository. Wir können das MongoTemplate
automatisch verdrahten hier und verwenden Sie es, um die Datenbank abzufragen.
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);
}
}
Zuletzt verwenden wir das ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}