最近的项目用了Mongodb,网上的用法大多都是七零八落的没有一个统一性,自己大概整理了下,项目中的相关配置就不叙述了,由于spring boot的快捷开发方式,所以spring boot项目中要使用Mongodb,只需要添加依赖和配置application.properties文件即可。整和方式一共有两种,一种是JPA的快捷方式,还有一种是实现MongoTemplate中的方法。

一、spring boot Mongodb JPA

  这种是mongodb的快捷开发方式,类似于spring data jpa的操作,通过使用spring boot约定的规范来定义名字,与HibernateRepository类似,通过继承MongoRepository接口,我们可以非常方便地实现对一个对象的增删改查,要使用Repository的功能,先继承MongoRepository<T, TD>接口,其中T为仓库保存的bean类,TD为该bean的唯一标识的类型,一般为ObjectId。之后在service中注入该接口就可以使用,无需实现里面的方法,spring会根据定义的规则自动生成。

创建一个bean,其中@id是这种表的主键,user就是表的名字

import org.springframework.data.annotation.Id;public class User  {@Idprivate Long id;private String name;private Integer userage;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getUserage() {return userage;}public void setUserage(Integer userage) {this.userage = userage;}public User(Long id, String name, Integer userage) {super();this.id = id;this.name = name;this.userage = userage;}}

View Code

通过jpa的方式实现查找,下面介绍最简单的两张和定义规则:

import org.springframework.data.mongodb.repository.MongoRepository;public interface UserMongodbJPA extends MongoRepository<User, Long>{
/*** * 单个条件查询,通过名字到数据* 方法名字定义规则:*  find +By+条件字段(必须是User中的属性)*/List<User> findByName(String name);/** * 多个条件查询,通过年龄和名字找到数据* 方法名字定义规则:* * ind +By+条件字段(必须是User中的属性)+AND+条件字段(必须是User中的属性)*/List<User>  findByUserageAndName(Integer userage,String name );
}

View Code

具体的其他命名规则,可通过下面的图进行查阅:

二、Spring boot  Mongodb原生实现方式

    JAP的方式虽然简单快捷,但是这种方式只能进行简单的查询操作,但是业务中往往需要复杂的逻辑操作,这时就不满足我们的需求,所以使用原生的方式,就能解决复制的逻辑业务。这种方式通过继承MongoRepository接口,只需要调用MongoTemplate中的方法即可。

  插入数据

  MongoTemplate为我们提供了两种方法插入数据:insert和save,两者的区别就是insert方法如果插入的数据的主键已经存在,则会抛出异常;save方法插入的数据的主键已经存在,则会对当前已经存在的数据进行修改操作。

private MongoTemplate mongoTemplate;/*** insert方法,会新增一条数据*/public void insert(){User u = new User("1","zhangsan",18);mongoTemplate.insert(u);}/*** save方法,如果主键重复,则修改原来的数据*/public void save() {User u = new User("1","小明",19);mongoTemplate.save(u);}

View Code

更新数据

更新一条数据,在关系型数据库中,我们需要where条件筛选出需要更新的数据,并且要给定更新的字段及值,在mongodb中也是一样,如果要使用筛选条件,就必须实例化Query对象。

/*** 要使用原生的mongodb方式,就要创建MongoTemplate ,*他的方法来实现SQL*/
private MongoTemplate mongoTemplate;/*** 更新对象*/public void updateTest() {//用来封装所有条件的对像Query query = new Query();//用来构建条件Criteria criteria = new Criteria();//criteria.and("你MongoDB中的key").is("你的条件")      criteria.and("name").is("小明");//把条件封装起来   
        query.addCriteria(criteria) ;//  Update 中构建更新的内容Update update= new Update().set("userage", "15").set("name", "小红");//更新查询返回结果集的第一条mongoTemplate.updateFirst(query,update,MongoTest.class);//更新查询返回结果集的所有mongoTemplate.updateMulti(query,update,User.class);
}

View Code

   删除数据

删除数据和更新数据类似,只需要使用MongoTemplate中的remove方法就能实现。

*** 删除对象*、*/public void deleteTestById() {Query query=new Query(Criteria.where("name").is("小红"));mongoTemplate.remove(query,User.class);}、

View Code

三、聚合操作

  在mysql数据库中,我们更多情况我们会使用聚合操作来简便我们的代码,列如SUM、count;在mongodb的数据库中,也是有这样的聚合函数,但是这时不在使用Query对象来封装条件,而是使用Aggregation对象来实现聚合操作,需要注意的是:mongoTemplate.aggregate实现的方法返回的是AggregationResults对象。

    public AggregationResults<T> aggregation(int pageNum, int pageSize, Criteria criteria,String name, String sortName, Sort sort,String tableName)throws BbsException {Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(criteria),//用于过滤数据,只输出符合条件的文档Aggregation.group(name);//将集合中的文档根据fileID分组,可用于统计结果。Aggregation.sort(sort), //将输入文档根据sort排序后输出。Aggregation.skip(pageNum - 1) * pageSize),//在聚合管道中跳过指定数量的文档,并返回余下的文档。Aggregation.limit(pageSize),//用来限制MongoDB聚合管道返回的文档数。Aggregation.sum(userage)//用来求和,求出userage字段值的和
              );return mongoTemplate.aggregate(aggregation, tableName, user.class);//tableName表示表的名字

View Code

    

转载于:https://www.cnblogs.com/daijiting/p/10083842.html

Spring boot整合Mongodb相关推荐

  1. Spring Boot整合MongoDB实现增删改查

    MongoDB这两年来是本人一直使用较多的,之前的使用大多通过封装的工具类对数据库进行操作,虽然也算稳定,但有了Spring Boot之前的工具类直接加到SpringBoot里就没那么好使了,因此查阅 ...

  2. spring boot 整合mongoDb

    目录 1.MongoDB安装 2.具体简单应用 1.MongoDB安装和基础学习 具体参考:https://www.runoob.com/mongodb/mongodb-window-install. ...

  3. Spring Boot 整合——MongoDB整合3(MongoDB聚合操作)

    文章前面 关于版本 依赖 版本 springboot 2.0.8.RELEASE mongodb 4.0.14 本内容只是为了介绍mongodb最基础的使用以及配置,作为一个知名的数据库,其存在相当多 ...

  4. MongoDB简单入门篇及其Spring Boot整合

    参考视频 ① MongoDB简介 简介 MongoDB是为快速开发互联网Web应用而设计的数据库系统 MongoDB的设计目标是极简.灵活. 作为Web应用栈的一部分 MongoDB是No SQL数据 ...

  5. Spring Boot 整合——Spring Boot整合kafka整合

    Spring Boot 整合之前的内容 项目名称 描述 地址 base-data-mybatis 整合mybatis-plus(实际上官方教程已经很多,只做了自定义插件) 未完成 base-jpa J ...

  6. Spring Boot整合ActiveMQ及场景举例(点对点模式、订阅模式)

    目录 前序 为什么要引入MQ 注册案例--不使用MQ 注册案例--引入MQ(点对点模式) 注册案例--引入MQ(发布/订阅模式) 安装Active MQ 使用Spring Boot进行整合(点对点模式 ...

  7. 干货必看|Spring Boot整合MyBatis框架详解

    在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持.所以今天壹哥就给大家讲解一下,如何在SpringBoot环境中整合 ...

  8. spring boot整合spring security笔记

    最近自己做了一个小项目,正在进行springboot和spring Security的整合,有一丢丢的感悟,在这里分享一下: 首先,spring boot整合spring security最好是使用T ...

  9. RabbitMQ使用及与spring boot整合

    1.MQ 消息队列(Message Queue,简称MQ)--应用程序和应用程序之间的通信方法 应用:不同进程Process/线程Thread之间通信 比较流行的中间件: ActiveMQ Rabbi ...

最新文章

  1. oracle pcm x6-2,Sun 7310210服务器Oracle X6-2原装拆机内存7310244 7090170
  2. 将虚拟机的版本改为1.6的方法
  3. 有不同列数的两个表的UNION
  4. 百度地图API : 自定义标注图标
  5. 差异性发展 - 浙江工商局长郑宇民“智斗”央视女主持董倩
  6. 如何从标签创建新分支?
  7. 计算机报警声 一高一低,有报警声电脑问题怎么处理 有报警声电脑问题处理方法【介绍】...
  8. 用JavaScript实现简单的乘法计算
  9. 中国石油大学(北京)-《 公共社交礼仪 》-​​​​​​​第一阶段在线作业
  10. 【Python】TX云服务器下CentOS+Python3+Nginx+uwsgi+Bottle搭建Web服务
  11. Haswell芯配独显 华硕F450JF全新上市
  12. tkinterQQ音乐与音频可视化
  13. 一文读懂IT行业都有哪些职位
  14. MemSQL分布式架构介绍
  15. Java线程池的知识
  16. java 获取两颜色值的中间值
  17. FTP文件服务器的搭建
  18. H5的video 在安卓浏览器上层级问题
  19. 手机上html怎么删不掉,格式化也不靠谱?教你如何彻底删除手机上的数据
  20. 社工工具安全测试-Seeker和ngrok

热门文章

  1. mysql redo原子写_InnoDB如何保证redolog的完整性?
  2. Git的安装(附安装包)
  3. dataframe常用操作_Pandas | Dataframe的merge操作,像数据库一样尽情join
  4. mt4 指标 涨跌幅 颜色k线_通达信指标公式源码阴线买股+黄金K线指标+源码
  5. win10英雄联盟登录服务器未响应,win10系统英雄联盟登陆不上的解决方法
  6. 台式计算机机箱都一样吗,别以为组装台式机很简单,机箱选择大有学问
  7. lambda中使用filter过滤
  8. 数据库系备份相关知识笔记
  9. 项目管理基础:软件开发的方法介绍
  10. jio文件 久其_功能强大的Windows文件管理器工具