Untuk penjelasan lebih lanjut, Anda bahkan dapat menggunakan keduanya secara bersamaan.
MongoRepository
hanyalah lapisan abstraksi, seperti MongoTemplate
, tetapi dengan antarmuka yang lebih sederhana.
Jika Anda merasa melakukan beberapa jenis operasi terlalu rumit dengan Spring pembuatan kueri
, dan entah bagaimana tidak ingin menggunakan @Query
(misalnya, Anda ingin petunjuk jenis IDE saat membuat kueri), Anda dapat memperluas MongoRepository
dan gunakan MongoTemplate
sebagai mekanisme kueri.
Pertama, kami memperluas repositori kami dengan antarmuka khusus kami.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Kemudian deklarasikan antarmuka.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
Dan kemudian terapkan repositori khusus kami. Kami dapat melakukan autowire pada MongoTemplate
di sini dan gunakan untuk menanyakan database.
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);
}
}
Terakhir, kami menggunakan ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}