Voor meer uitleg kun je zelfs beide tegelijk gebruiken.
MongoRepository
is slechts een abstractielaag, zoals MongoTemplate
, maar met een eenvoudigere interface.
Als u vindt dat een bewerking te ingewikkeld is met Spring query-creation
, en op de een of andere manier geen gebruik wil maken van @Query
(u wilt bijvoorbeeld een hint van het IDE-type bij het maken van query's), u kunt de MongoRepository
uitbreiden en gebruik MongoTemplate
als het vraagmechanisme.
Eerst breiden we onze repository uit met onze aangepaste interface.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Declareer vervolgens de interface.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
En implementeer vervolgens onze aangepaste repository. We kunnen de MongoTemplate
automatisch bedraden hier en gebruik het om de database te doorzoeken.
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);
}
}
Als laatste gebruiken we de ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}