为了进一步说明,您甚至可以同时使用两者。
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);
}
}