广告
返回顶部
首页 > 资讯 > 精选 >使用MongoDB如何对Spring进行整合
  • 776
分享到

使用MongoDB如何对Spring进行整合

mongodbspring 2023-05-31 10:05:16 776人浏览 独家记忆
摘要

本篇文章给大家分享的是有关使用MongoDB如何对spring进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。添加依赖<dependency> &n

本篇文章给大家分享的是有关使用MongoDB如何对spring进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

添加依赖

<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://www.springframework.org/schema/beans"    xmlns:util="http://www.springframework.org/schema/util"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:mongo="http://www.springframework.org/schema/data/mongo"    xsi:schemaLocation="    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">  <context:property-placeholder      ignore-unresolvable="true" location="classpath:/mongodb.properties"/>  <mongo:mongo-client id="mongoClient" host="${mongo.host}" port="${mongo.port}">    <!-- credentials="${mongo.user}:${mongo.pwd}@${mongo.defaultDbName}"-->  </mongo:mongo-client>  <mongo:db-factory id="mongoDbFactory"           dbname="${mongo.database}"           mongo-ref="mongoClient"/>  <!-- 默认Mongodb类型映射 -->  <bean id="defaultMongoTypeMapper" class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">    <constructor-arg name="typeKey">      <!-- 这里设置为空,可以把 spring data mongodb 多余保存的_class字段去掉 -->      <null/>    </constructor-arg>  </bean>  <mongo:repositories base-package="com.critc.mongo"/>  <!-- 自动扫描以下包的有Doucment注解的类 -->  <mongo:mapping-converter id="mappinGConverter" base-package="com.critc.mongo.model"               type-mapper-ref="defaultMongoTypeMapper">  </mongo:mapping-converter>  <!-- Mongodb的模板 -->  <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>    <constructor-arg name="mongoConverter" ref="mappingConverter"/>  </bean></beans>

mongo:mongo-client是定义MongoDB的客户端连接,需要host和port参数,如果需要账号密码的话,需要增加credentials配置

mongo:db-factory配置连接工厂,指定具体的连接数据库,本例默认为test

defaultMongoTypeMapper默认Mongodb类型映射

mongo:mapping-converterMongoDB的实体映射

mongoTemplate这是最主要的,定义模板类,依赖连接工厂和实体映射

这里举一个article的增删改查的例子。

相关实体Article.java

@Document(collection = "article_info")public class Article {  @Id  private String id;//id  @Field("title")  private String title;//标题  @Field("url")  private String url;//链接  @Field("author")  private String author;//作者  @Field("tags")  private List<String> tags;//tag 标签  @Field("visit_count")  private Long visitCount;//访问次数  @Field("add_time")  private Date addTime;//添加时间// get set方法省略

@Document(collection = "article_info")这个注解和Hibernate的注解Entiry非常相似,就是定义一个文档,对象MongoDB存储的Collection的名称是article_info

@Id指该字段是主键,不能缺少

@Field("add_time")指该字段映射MongoDB的实际字段,如果一致可以省略

ArticleRepository实际访问接口

@Repository("ArticleRepository")public interface ArticleRepository extends PagingAndSortingRepository<Article, String> {  //分页查询  public Page<Article> findAll(Pageable pageable);  //根据author查询  public List<Article> findByAuthor(String author);  //根据作者和标题查询  public List<Article> findByAuthorAndTitle(String author, String title);  //忽略参数大小写  public List<Article> findByAuthorIgnoreCase(String author);  //忽略所有参数大小写  public List<Article> findByAuthorAndTitleAllIgnoreCase(String author, String title);  //排序  public List<Article> findByAuthorOrderByVisitCountDesc(String author);  public List<Article> findByAuthorOrderByVisitCountAsc(String author);  //自带排序条件  public List<Article> findByAuthor(String author, Sort sort);}

Spring的data repository封装了一套增删改查的方法,就和JPA实现的一样,ArticleRepository继承PagingAndSortingRepository,就集成了常用的增删改查方法,比如save、findOne、exists、findAll、delete等等,可以采用默认实现方式来完成常用的增删改查操作。

测试上述各个方法ArticleRepositoryTest.java

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath*:applicationContext-mongo.xml"})public class ArticleRepositoryTest {  @Autowired  private ArticleRepository articleRepository;    @Test  public void add() {    //增加一条记录    Article article = new Article();    article.setId("1");    article.setTitle("MongoTemplate的基本使用");    article.setAuthor("kcy");    article.setUrl("http://jianshu.com/");    article.setTags(Arrays.asList("java", "mongodb", "spring"));    article.setVisitCount(0L);    article.setAddTime(new Date());    articleRepository.save(article);    //批量添加    List<Article> articles = new ArrayList<>(10);    for (int i = 0; i < 10; i++) {      Article article2 = new Article();      article2.setId(String.valueOf(i + 1));      article2.setTitle("MongoTemplate的基本使用");      article2.setAuthor("kcy");      article2.setUrl("http://jianshu.com" + i);      article2.setTags(Arrays.asList("java", "mongodb", "spring"));      article2.setVisitCount(0L);      article2.setAddTime(new Date());      articles.add(article2);    }    articleRepository.save(articles);  }    @Test  public void update() {    Article article = articleRepository.findOne("1");    article.setVisitCount(article.getVisitCount() + 1);    articleRepository.save(article);  }    @Test  public void batchUpdate() {    List<Article> articles = articleRepository.findByAuthor("kcy");    articles.forEach(article -> {      article.setAuthor("kcy2");    });    articleRepository.save(articles);  }    @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);  }    @Test  public void findAll() {    Iterable<Article> articles = articleRepository.findAll();    articles.forEach(article -> {      System.out.println(article.toString());    });  }    @Test  public void findByAuthor() {    List<Article> articles = articleRepository.findByAuthor("kcy");    articles.forEach(article -> {      System.out.println(article.toString());    });  }    @Test  public void findByAuthorAndTitle() {    List<Article> articles = articleRepository.findByAuthorAndTitle("kcy", "MongoTemplate的基本使用");    articles.forEach(article -> {      System.out.println(article.toString());    });  }    @Test  public void findByAuthorIgnoreCase() {    List<Article> articles = articleRepository.findByAuthorIgnoreCase("JASON");    articles.forEach(article -> {      System.out.println(article.getId());    });  }    @Test  public void findByAuthorAndTitleAllIgnoreCase() {    List<Article> articles = articleRepository.findByAuthorAndTitleAllIgnoreCase("KCY", "MONGOTEMPLATE的基本使用");    articles.forEach(article -> {      System.out.println(article.toString());    });  }    @Test  public void findByAuthorOrderByVisitCountDesc() {    List<Article> articles = articleRepository.findByAuthorOrderByVisitCountDesc("kcy");    articles.forEach(article -> {      System.out.println(article.toString());    });  }    @Test  public void findByAuthorOrderByVisitCountAsc() {    List<Article> articles = articleRepository.findByAuthorOrderByVisitCountAsc("kcy");    articles.forEach(article -> {      System.out.println(article.toString());    });  }    @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查找、按标题查询、分页等等。

以上就是使用MongoDB如何对Spring进行整合,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 使用MongoDB如何对Spring进行整合

本文链接: https://www.lsjlt.com/news/224941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用MongoDB如何对Spring进行整合
    本篇文章给大家分享的是有关使用MongoDB如何对Spring进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。添加依赖<dependency> &n...
    99+
    2023-05-31
    mongodb spring
  • 使用Spring Boot如何实现对MongoDB进行整合
    本篇文章给大家分享的是有关使用Spring Boot如何实现对MongoDB进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MongoDB是什么?MongoDB是一个No...
    99+
    2023-05-31
    springboot mongodb
  • 使用Spring Boot如何对Mybatis进行整合
    今天就跟大家聊聊有关使用Spring Boot如何对Mybatis进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。依赖配置结合前面的内容,这里我们要嵌入数据库的操作,这里以操作...
    99+
    2023-05-31
    springboot mybatis
  • 使用springboot如何实现对mongodb进行整合
    使用springboot如何实现对mongodb进行整合?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。环境依赖在pom文件引入spring-boot-starter-data-...
    99+
    2023-05-31
    springboot mongodb
  • 使用spring如何对cxf框架进行整合
    使用spring如何对cxf框架进行整合?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.创建动态web项目2.导入cxf和spring相关jar包(CXF核心...
    99+
    2023-05-31
    cxf spring
  • 使用spring怎么对mybatis进行整合
    本篇文章为大家展示了使用spring怎么对mybatis进行整合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 数据库连接配置信息jdbc.properties#mysql version dat...
    99+
    2023-05-31
    spring mybatis
  • 使用spring boot如何实现对CAS进行整合
    今天就跟大家聊聊有关使用spring boot如何实现对CAS进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码整合cas的重要过程import org.jasig.cas....
    99+
    2023-05-31
    springboot cas
  • 使用spring boot如何实现对RabbitMQ进行整合
    使用spring boot如何实现对RabbitMQ进行整合?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。springboot集成RabbitMQ非常简单,如果...
    99+
    2023-05-31
    springboot rabbitmq
  • 使用spring boot如何实现对Swagger2进行整合
    本篇文章给大家分享的是有关使用spring boot如何实现对Swagger2进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Swagger 是一个规范和完整的框架,用于...
    99+
    2023-05-31
    springboot swagger2
  • 使用Spring boot怎么对Mybatis进行整合
    这篇文章将为大家详细讲解有关使用Spring boot怎么对Mybatis进行整合,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、文件结构DataBaseConfiguration.Jav...
    99+
    2023-05-31
    springboot mybatis
  • springboot如何进行整合mongodb
    springboot如何进行整合mongodb,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。准备工作安装 MongoDBjdk 1.8maven 3.0idea环境依赖在p...
    99+
    2023-06-19
  • 使用Spring怎么对Web项目进行整合
    今天就跟大家聊聊有关使用Spring怎么对Web项目进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一 概述1.整合目的将所有对象的创建与管理任务交给Spring容器,降低程序...
    99+
    2023-05-31
    spring web
  • 使用Spring Boot 怎么对mybatis与swagger2进行整合
    本篇文章给大家分享的是有关使用Spring Boot 怎么对mybatis与swagger2进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先是pom文件的一些依赖&l...
    99+
    2023-05-31
    springboot mybatis swagger2
  • 如何在Spring中利用webservice restful对CXF 进行整合
    今天就跟大家聊聊有关如何在Spring中利用webservice restful对CXF 进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。webservice restful接...
    99+
    2023-05-31
    spring cxf webservice
  • 怎么对struts、spring与hibernate进行整合
    怎么对struts、spring与hibernate进行整合?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。准备三个框架结合的lib包Spring3结合Struts2的步骤如下:...
    99+
    2023-05-31
    struts hibernate spring
  • 如何将spring与quartz进行整合
    如何将spring与quartz进行整合?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第0步:在spring配置包扫描以及在 pom导入包spring.xml:pom.xml1...
    99+
    2023-05-31
    quartz spring art
  • 使用spring如何实现springmvc与mybatis进行整合
    使用spring如何实现springmvc与mybatis进行整合?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。jar包 引入web.xml文件<conte...
    99+
    2023-05-31
    spring springmvc mybatis
  • 使用springboot如何实现对 beatlsql进行整合
    这篇文章给大家介绍使用springboot如何实现对 beatlsql进行整合,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。BeetSql是一个全功能DAO工具, 同时具有hibernate 优点 & Myba...
    99+
    2023-05-31
    springboot beatlsql bea
  • 使用springboot如何实现对freemarker进行整合
    这篇文章将为大家详细讲解有关使用springboot如何实现对freemarker进行整合,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前提:开发工具:idea框架:spring boot、...
    99+
    2023-05-31
    springboot freemarker
  • 使用SpringBoot如何实现对ElasticSearch进行整合
    这篇文章给大家介绍使用SpringBoot如何实现对ElasticSearch进行整合,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、实体设计:Tutorial.javapublic class Tutorial i...
    99+
    2023-05-31
    springboot elasticsearch
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作