MongoDB现在用的非常非常多,如何和Spring整合也是经常碰到的问题。
Spring提供了MongoTemplate这样一个模板类的实现方法,简化了具体操作。
下面讲一下具体实现:
添加依赖
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.10.3.RELEASE</version></dependency>
其余Spring相关的忽略
Spring的配置applicationContext-mongo.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://" + i); article2.setTags(Arrays.asList("java", "mongodb", "spring")); article2.setVisitCount(0L); article2.setAddTime(new Date()); articles.add(article2); } articleRepository.save(articles); } /** * 修改记录,修改id为1的访问次数+1 */ @Test public void update() { Article article = articleRepository.findOne("1"); article.setVisitCount(article.getVisitCount() + 1); articleRepository.save(article); } /** * 批量修改,查看author为kcy的统一修改为kcy2 */ @Test public void batchUpdate() { List<Article> articles = articleRepository.findByAuthor("kcy"); articles.forEach(article -> { article.setAuthor("kcy2"); }); articleRepository.save(articles); } /** * 删除记录,删除id为10的 */ @Test public void delete() { Article article = articleRepository.findOne("10"); articleRepository.delete(article); } @Test public void batchDelete() { List<Article> articles = articleRepository.findByAuthor("kcy2"); articleRepository.delete(articles); } /** * 查询所有 * * @author 孔垂云 */ @Test public void findAll() { Iterable<Article> articles = articleRepository.findAll(); articles.forEach(article -> { System.out.println(article.toString()); }); } /** * 根据author查询 * * @author 孔垂云 */ @Test public void findByAuthor() { List<Article> articles = articleRepository.findByAuthor("kcy"); articles.forEach(article -> { System.out.println(article.toString()); }); } /** * 按照author和title查询 * * @author 孔垂云 */ @Test public void findByAuthorAndTitle() { List<Article> articles = articleRepository.findByAuthorAndTitle("kcy", "MongoTemplate的基本使用"); articles.forEach(article -> { System.out.println(article.toString()); }); } /** * 根据作者查询,忽略大小写 * * @author 孔垂云 */ @Test public void findByAuthorIgnoreCase() { List<Article> articles = articleRepository.findByAuthorIgnoreCase("JASON"); articles.forEach(article -> { System.out.println(article.getId()); }); } /** * 忽略所有参数的大小写 * * @author 孔垂云 */ @Test public void findByAuthorAndTitleAllIgnoreCase() { List<Article> articles = articleRepository.findByAuthorAndTitleAllIgnoreCase("KCY", "MONGOTEMPLATE的基本使用"); articles.forEach(article -> { System.out.println(article.toString()); }); } /** * 根据author查询,并且以访问次数降序排序显示 * * @author 孔垂云 */ @Test public void findByAuthorOrderByVisitCountDesc() { List<Article> articles = articleRepository.findByAuthorOrderByVisitCountDesc("kcy"); articles.forEach(article -> { System.out.println(article.toString()); }); } /** * 根据作者查询,并且以访问次数升序排序显示 * * @author 孔垂云 */ @Test public void findByAuthorOrderByVisitCountAsc() { List<Article> articles = articleRepository.findByAuthorOrderByVisitCountAsc("kcy"); articles.forEach(article -> { System.out.println(article.toString()); }); } /** * 自带排序条件 * * @author 孔垂云 */ @Test public void findByAuthorBySort() { List<Article> articles = articleRepository.findByAuthor("kcy", new Sort(Direction.ASC, "VisitCount")); articles.forEach(article -> { System.out.println(article.toString()); }); } /** * 分页查询所有,并且排序 */ @Test public void findByPage() { int page = 1; int size = 2; Pageable pageable = new PageRequest(page, size, new Sort(Direction.ASC, "VisitCount")); Page<Article> pageInfo = articleRepository.findAll(pageable); //总数量 System.out.println(pageInfo.getTotalElements()); //总页数 System.out.println(pageInfo.getTotalPages()); for (Article article : pageInfo.getContent()) { System.out.println(article.toString()); } }}
上面一段代码较长,基本上MongoDB常用的各种例子都讲清楚了,比如增加、批量增加、修改、删除、按id查找、按标题查询、分页等等。
源码下载
本工程详细源码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。