Pour plus d'explications, vous pouvez même utiliser les deux en même temps.
MongoRepository
est juste une couche d'abstraction, comme MongoTemplate
, mais avec une interface plus simple.
Si vous trouvez que faire une opération est trop compliqué avec Spring query-creation
, et ne veut pas utiliser @Query
(par exemple, vous voulez un indice de type IDE lors de la construction de requêtes), vous pouvez étendre le MongoRepository
et utilisez MongoTemplate
comme mécanisme de requête.
Nous étendons d'abord notre référentiel avec notre interface personnalisée.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Déclarez ensuite l'interface.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
Et puis implémentez notre référentiel personnalisé. Nous pouvons câbler automatiquement le MongoTemplate
ici et utilisez-le pour interroger la base de données.
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);
}
}
Enfin, nous utilisons le ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}