Pro další vysvětlení můžete dokonce použít oba současně.
MongoRepository
je pouze abstraktní vrstva, jako je MongoTemplate
, ale s jednodušším rozhraním.
Pokud zjistíte, že provádění nějaké operace je s Spring příliš komplikované vytvoření dotazu
a nějak nechce používat @Query
(například chcete nápovědu typu IDE při vytváření dotazů), můžete rozšířit MongoRepository
a použijte MongoTemplate
jako mechanismus dotazu.
Nejprve rozšíříme naše úložiště o naše vlastní rozhraní.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Poté deklarujte rozhraní.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
A poté implementujte naše vlastní úložiště. Můžeme automaticky zapojit MongoTemplate
zde a použijte jej k dotazování databáze.
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);
}
}
Nakonec používáme ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}