前言

MongoDB(来自于英文单词“Humongous”,中文含义为“庞大” )是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。

正文

Spring Boot 对 MongoDB 的数据源操作进行了封装。

加入依赖

在 pom.xml 加入:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

配置连接参数

在系统配置文件中配置:

spring:data:mongodb:uri: mongodb://wuwii:123456@localhost:27017/learn

测试使用

  1. 创建实体
@Data
@Document(collection = "pet") // 标识要持久化到MongoDB的域对象。模型名是 pet
public class Pet implements Serializable {@Id//@Indexed(unique = true) // 使用MongoDB的索引特性标记一个字段private Long id;@Field("pet_name") //自定义设置对应MongoDB中的keyprivate String name;private String species;
}
  1. 创建 dao 接口完成基础操作
@Repository
public class PetDaoImpl implements PetDao {@Autowiredprivate MongoTemplate mongoTemplate;@Overridepublic Pet find(Long id) {return mongoTemplate.findById(id, Pet.class);}@Overridepublic List<Pet> findAll() {return mongoTemplate.findAll(Pet.class);}@Overridepublic void add(Pet pet) {mongoTemplate.insert(pet);}@Overridepublic void update(Pet pet) {Query query = new Query();Criteria criteria = new Criteria("id");criteria.is(pet.getId());query.addCriteria(criteria);Update update = new Update();update.set("pet_name", pet.getName()).set("species", pet.getSpecies());mongoTemplate.updateFirst(query, update, Pet.class); // 条件,更新的数据,更新的类型}@Overridepublic void delete(Long id) {Criteria criteria = new Criteria("id");criteria.is(id);Query query = new Query();query.addCriteria(criteria);mongoTemplate.remove(query, Pet.class); // 删除的条件、删除的类型}
}
  1. 简单测试下
@SpringBootTest
@RunWith(SpringRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class PetDaoTest {@Autowiredprivate PetDao petDao;private Pet pet;@Beforepublic void before() {pet = new Pet();pet.setId(1L);pet.setName("Tom");pet.setSpecies("cat");}@Afterpublic void after() {}@Testpublic void test01Add() {Pet pet = new Pet();pet.setId(1L);pet.setName("Tom");pet.setSpecies("cat");petDao.add(pet);}@Testpublic void test02Find() {Assert.assertThat(pet, Matchers.equalTo(petDao.find(pet.getId())));}@Testpublic void test03FindAll() {System.out.println(petDao.findAll());}@Testpublic void test04Update() {pet.setName("KronChan");petDao.update(pet);Assert.assertThat(pet, Matchers.equalTo(petDao.find(pet.getId())));}@Testpublic void test05Delete() {petDao.delete(pet.getId());Assert.assertThat(null, Matchers.equalTo(petDao.find(pet.getId())));}}

去数据库验证结果

> use learn
switched to db learn
> db.pet.find()
{ "_id" : NumberLong(1), "_class" : "com.wuwii.testmongodb.Pet", "pet_name" : "KronChan", "species" : "cat" }

多数据源的使用

未完成


学习Spring Boot:(二十)使用 MongoDB相关推荐

  1. (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控

    http://www.ityouknow.com/springboot/2018/02/11/spring-boot-admin.html 上一篇文章<Spring Boot(十九):使用 Sp ...

  2. 学习Spring Boot:(二十五)使用 Redis 实现数据缓存

    前言 由于 Ehcache 存在于单个 java 程序的进程中,无法满足多个程序分布式的情况,需要将多个服务器的缓存集中起来进行管理,需要一个缓存的寄存器,这里使用的是 Redis. 正文 当应用程序 ...

  3. 学习Spring Boot:(二十六)使用 RabbitMQ 消息队列

    前言 前面学习了 RabbitMQ 基础,现在主要记录下学习 Spring Boot 整合 RabbitMQ ,调用它的 API ,以及中间使用的相关功能的记录. 相关的可以去[我的博客/Rabbit ...

  4. Spring Boot(十二)集成spring-boot-starter-mail发送邮件

    项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot(十二)集成spring-boot-starter-mail发 ...

  5. 2022 年学习 Spring Boot 开发的最佳书籍

    在我们之前的文章中,我们查看了学习 Java 编程的必读书籍我们在其中探索了一些您可以利用的资源来加快 Java 开发的速度.在此基础上,在用 vanilla Java 编写一段时间后,您将意识到组织 ...

  6. quartz集成到springboot_一个用来学习 spring boot 的开源项目,总共包含 57 个集成demo...

    spring-boot-demo 一个用来学习 spring boot 的项目,总共包含 57 个集成demo. 包含集成 actuator(监控).admin(可视化监控).logback(日志). ...

  7. 窗口消息——Windows核心编程学习手札之二十六

    窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...

  8. 未处理异常和C++异常——Windows核心编程学习手札之二十五

    未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...

  9. 异常处理程序和软件异常——Windows核心编程学习手札之二十四

    异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...

  10. 插入DLL和挂接API——Windows核心编程学习手札之二十二

    插入DLL和挂接API --Windows核心编程学习手札之二十二 如下情况,可能要打破进程的界限,访问另一个进程的地址空间: 1)为另一个进程创建的窗口建立子类时: 2)需要调试帮助时,如需要确定另 ...

最新文章

  1. python max函数_Python3
  2. 用cookie实现保存密码
  3. MASM5.0汇编环境安装
  4. git 分支查看与切换
  5. 【网站】 简单通用微信QQ跳转浏览器打开代码
  6. Linux设备模型(4)_sysfs
  7. SpringMVC源码解析 - HandlerAdapter - @SessionAttributes注解处理
  8. 如何让你产品的用户拥有一流的上传体验
  9. 记录一个好用的压缩软件 HandBrake
  10. 1.22.FLINK Watermark\Flink窗口(Window)\watermark有什么用?\如何使用Watermarks处理乱序的数据流?\机制及实例详解\生成方式\代码实例
  11. 面试笔记:面经-网易考拉
  12. 硬盘数据丢失如何恢复?
  13. 分享职场心得《14》
  14. 增设区域分销商:APC渠道变革拒绝“扁平化”
  15. Java 访问 HDFS操作
  16. Java基础(1)-存在指针吗
  17. 王者荣耀自动化获取金币/经验周上限 教程
  18. python判断正数和负数教案_正数与负数 优秀教案
  19. 应用市场建站系统 171cms app下载站源码
  20. Linux执行命令常用命令4.0

热门文章

  1. php快速排序实现代码,快速排序的算法php实现
  2. java opencv安装路径_Java搭建opencv开发环境
  3. [转载] 多线程详解java.util.concurrent
  4. scala元组 数组_Scala中的数组
  5. 不同php文件,php-不同文件夹的不同登录(会话)
  6. inventor扳手制作视频_弱电工程视频监控系统施工方案,可作施工组织设计
  7. ibm mq的交互命令模式_IBM的完整形式是什么?
  8. Python | 如何创建模块(模块示例)?
  9. stl min函数_std :: min_element()函数以及C ++ STL中的示例
  10. Linux debian安装PyCharm教程