Para una explicación más detallada, incluso puede usar ambos al mismo tiempo.
MongoRepository
es solo una capa de abstracción, como MongoTemplate
, pero con una interfaz más sencilla.
Si encuentra que hacer algún tipo de operación es demasiado complicado con Spring query-creation
, y de alguna manera no quiere usar @Query
(por ejemplo, desea una sugerencia de tipo IDE al construir consultas), puede extender el MongoRepository
y usa MongoTemplate
como mecanismo de consulta.
Primero ampliamos nuestro repositorio con nuestra interfaz personalizada.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Luego declare la interfaz.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
Y luego implementar nuestro repositorio personalizado. Podemos autoconectar el MongoTemplate
aquí y utilícelo para consultar la base de datos.
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);
}
}
Por último, usamos el ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}