För ytterligare förklaring kan du till och med använda båda samtidigt.
MongoRepository
är bara ett abstraktionslager, som MongoTemplate
, men med enklare gränssnitt.
Om du hittade att göra någon form av operation är det för komplicerat med Spring skapande av frågor
, och på något sätt inte vill använda @Query
(om du till exempel vill ha IDE-typtips när du konstruerar frågor), kan du utöka MongoRepository
och använd MongoTemplate
som frågemekanism.
Först utökar vi vårt arkiv med vårt anpassade gränssnitt.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Deklarera sedan gränssnittet.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
Och implementera sedan vårt anpassade arkiv. Vi kan koppla in MongoTemplate
automatiskt här och använd den för att fråga i databasen.
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);
}
}
Till sist använder vi ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}