Để được giải thích thêm, bạn thậm chí có thể sử dụng cả hai cùng một lúc.
MongoRepository
chỉ là một lớp trừu tượng, như MongoTemplate
, nhưng với giao diện đơn giản hơn.
Nếu bạn thấy việc thực hiện một số loại thao tác quá phức tạp với Spring truy vấn-tạo
và bằng cách nào đó không muốn sử dụng @Query
(ví dụ:bạn muốn gợi ý loại IDE khi tạo truy vấn), bạn có thể mở rộng MongoRepository
và sử dụng MongoTemplate
làm cơ chế truy vấn.
Đầu tiên, chúng tôi mở rộng kho lưu trữ của mình với giao diện tùy chỉnh của chúng tôi.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Sau đó khai báo giao diện.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
Và sau đó triển khai kho lưu trữ tùy chỉnh của chúng tôi. Chúng tôi có thể tự động kích hoạt MongoTemplate
tại đây và sử dụng nó để truy vấn cơ sở dữ liệu.
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);
}
}
Cuối cùng, chúng tôi sử dụng ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}