For yderligere forklaring kan du endda bruge begge på samme tid.
MongoRepository
er blot et abstraktionslag, som MongoTemplate
, men med enklere grænseflade.
Hvis du fandt ud af at udføre en form for operation er for kompliceret med Spring oprettelse af forespørgsler
, og på en eller anden måde ikke ønsker at bruge @Query
(du vil f.eks. have et tip af IDE-typen, når du konstruerer forespørgsler), kan du udvide MongoRepository
og brug MongoTemplate
som forespørgselsmekanismen.
Først udvider vi vores lager med vores brugerdefinerede grænseflade.
@Repository
public interface ArticleRepository extends MongoRepository<Article, String>, CustomArticleRepository {
}
Deklarer derefter grænsefladen.
public interface CustomArticleRepository {
List<Article> getArticleFilteredByPage(int page, int num);
}
Og implementer derefter vores brugerdefinerede lager. Vi kan autokoble MongoTemplate
her og brug den til at forespørge 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);
}
}
Til sidst bruger vi ArticleRepository
.
@Service
public class ArticleServiceImpl {
@Autowired
private ArticleRepository articleRepository;
public List<Article> getArticleByPage() {
return articleRepository.getArticleFilteredByPage(1, 10);
}
}