前言

MongoDB 1 是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由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中的key
private String name;
private String species;
}
  1. 创建 dao 接口完成基础操作
@Repository
public class PetDaoImpl implements PetDao {
@Autowired
private MongoTemplate mongoTemplate; @Override
public Pet find(Long id) {
return mongoTemplate.findById(id, Pet.class);
} @Override
public List<Pet> findAll() {
return mongoTemplate.findAll(Pet.class);
} @Override
public void add(Pet pet) {
mongoTemplate.insert(pet);
} @Override
public 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); // 条件,更新的数据,更新的类型
} @Override
public 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 { @Autowired
private PetDao petDao; private Pet pet; @Before
public void before() {
pet = new Pet();
pet.setId(1L);
pet.setName("Tom");
pet.setSpecies("cat");
} @After
public void after() {
} @Test
public void test01Add() {
Pet pet = new Pet();
pet.setId(1L);
pet.setName("Tom");
pet.setSpecies("cat");
petDao.add(pet);
} @Test
public void test02Find() {
Assert.assertThat(pet, Matchers.equalTo(petDao.find(pet.getId())));
} @Test
public void test03FindAll() {
System.out.println(petDao.findAll());
} @Test
public void test04Update() {
pet.setName("KronChan");
petDao.update(pet);
Assert.assertThat(pet, Matchers.equalTo(petDao.find(pet.getId())));
} @Test
public 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" }

多数据源的使用

未完成


  1. 来自于英文单词“Humongous”,中文含义为“庞大”

学习Spring Boot:(二十)使用 MongoDB的更多相关文章

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

    Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控 Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含: ...

  2. spring boot(二十)使用spring-boot-admin对服务进行监控

    上一篇文章<springboot(十九):使用Spring Boot Actuator监控应用>介绍了Spring Boot Actuator的使用,Spring Boot Actuato ...

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

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

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

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

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

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

  6. spring boot / cloud (十二) 异常统一处理进阶

    spring boot / cloud (十二) 异常统一处理进阶 前言 在spring boot / cloud (二) 规范响应格式以及统一异常处理这篇博客中已经提到了使用@ExceptionHa ...

  7. 学习 Spring Boot 知识看这一篇就够了

    从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...

  8. spring boot / cloud (十六) 分布式ID生成服务

    spring boot / cloud (十六) 分布式ID生成服务 在几乎所有的分布式系统或者采用了分库/分表设计的系统中,几乎都会需要生成数据的唯一标识ID的需求, 常规做法,是使用数据库中的自动 ...

  9. Spring Boot 二十个注解

    Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...

  10. Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用

    在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理, ...

随机推荐

  1. 【JVM.3】虚拟机性能监控与故障处理工具

    一.概述 经过前面两章对于虚拟机内存分配与回收技术各方面的介绍,相信读者已经建立了一套比较完整的理论基础.理论总是作为指导实践的工具,能把这些执行应用到实际工作中才是我们的最终目的.接下来我们会从实践 ...

  2. MongoDB集群运维笔记

    前面的文章介绍了MongoDB副本集和分片集群的做法,下面对MongoDB集群的日常维护操作进行小总结: MongDB副本集故障转移功能得益于它的选举机制.选举机制采用了Bully算法,可以很方便从分 ...

  3. 自动化批量管理工具salt-ssh - 运维小结

    根据以往运维工作中操作经验来说,当管理上百台上千台服务器时,选择一款批量操作工具是及其有必要的.早期习惯于在ssh信任关系的前提下做for;do;done循环语句的批量操作,后来逐渐趋于使用批量工具操 ...

  4. Centos下MooseFS(MFS)分布式存储共享环境部署记录

    分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式.目前 ...

  5. 理解Vue 2.5的Diff算法

    DOM"天生就慢",所以前端各大框架都提供了对DOM操作进行优化的办法,Angular中的是脏值检查,React首先提出了Virtual Dom,Vue2.0也加入了Virtual ...

  6. swap函数

    #include<iostream> using namespace std; void swap(int& a,int& b){ int t=a; a=b; b=t; } ...

  7. STL next_permutation()

    用法 字典序全排列 可以发现函数next_permutation()是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序. 代码 #include<iostream&g ...

  8. 《Linux内核分析》第五周学习总结

    <Linux内核分析>第五周学习总结                                  ——扒开系统调用的三层皮(下) 姓名:王玮怡 学号:20135116 1.给menu ...

  9. C++中struct 和 class的区别

    首先,C++中类的定义,从狭义上理解,就是我们使用的class类型.从广义上,类就是定义了一个新的类型和新的作用域,它具有成员函数和成员数据. 而对广义类定义的实现分为两种,一种是使用struct实现 ...

  10. php配置虚拟主机

    在httpd.conf的目录下,新建一个配置文件virtualhost-host.conf,添加虚拟主机配置 <VirtualHost *:80> DocumentRoot "E ...