学习Spring Boot:(二十)使用 MongoDB
前言
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
测试使用
- 创建实体
@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;
}
- 创建 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); // 删除的条件、删除的类型
}
}
- 简单测试下
@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" }
多数据源的使用
未完成
- 来自于英文单词“Humongous”,中文含义为“庞大” ↩
学习Spring Boot:(二十)使用 MongoDB的更多相关文章
- Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控
Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控 Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含: ...
- spring boot(二十)使用spring-boot-admin对服务进行监控
上一篇文章<springboot(十九):使用Spring Boot Actuator监控应用>介绍了Spring Boot Actuator的使用,Spring Boot Actuato ...
- (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控
http://www.ityouknow.com/springboot/2018/02/11/spring-boot-admin.html 上一篇文章<Spring Boot(十九):使用 Sp ...
- 学习Spring Boot:(二十五)使用 Redis 实现数据缓存
前言 由于 Ehcache 存在于单个 java 程序的进程中,无法满足多个程序分布式的情况,需要将多个服务器的缓存集中起来进行管理,需要一个缓存的寄存器,这里使用的是 Redis. 正文 当应用程序 ...
- 学习Spring Boot:(二十六)使用 RabbitMQ 消息队列
前言 前面学习了 RabbitMQ 基础,现在主要记录下学习 Spring Boot 整合 RabbitMQ ,调用它的 API ,以及中间使用的相关功能的记录. 相关的可以去我的博客/RabbitM ...
- spring boot / cloud (十二) 异常统一处理进阶
spring boot / cloud (十二) 异常统一处理进阶 前言 在spring boot / cloud (二) 规范响应格式以及统一异常处理这篇博客中已经提到了使用@ExceptionHa ...
- 学习 Spring Boot 知识看这一篇就够了
从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区.我的博客和我的公号内.粗略的统计了一下总共的文章加起来大概有六十多篇了,其 ...
- spring boot / cloud (十六) 分布式ID生成服务
spring boot / cloud (十六) 分布式ID生成服务 在几乎所有的分布式系统或者采用了分库/分表设计的系统中,几乎都会需要生成数据的唯一标识ID的需求, 常规做法,是使用数据库中的自动 ...
- Spring Boot 二十个注解
Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...
- Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用
在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理, ...
随机推荐
- JS_各种排序方法
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则应采 ...
- @Pointcut的用法
在Spring 2.0中,Pointcut的定义包括两个部分:Pointcut表示式(expression)和Pointcut签名(signature).让我们先看看execution表示式的格式: ...
- kvm虚拟化关闭虚拟网卡virbr0的方法
我们知道:kvm虚拟化环境安装好后,ifconfig会发现多了一个虚拟网卡virbr0这是由于安装和启用了libvirt服务后生成的,libvirt在服务器(host)上生成一个 virtual ne ...
- zabbix监控-基本原理介绍
一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...
- android studio报Resolved versions for app (26.1.0) and test app (27.1.1)differ. 错误的解决办法
https://blog.csdn.net/qq_36636969/article/details/80278150
- alpa开发阶段团队贡献分
这是我们团队之前决定的分配方式: 1.凡是认真完成自己任务的队员,都将有基础分30分(态度分). 2. 将整个项目细化为不同的任务,列出一个任务清单,在综合.协调完每名成员的意愿后,我会分配清单中的任 ...
- vs2013——单元测试&& 性能图
一.如何创建单元测试 下面这个博客中写的很详细: http://***/Article/11186 其中需要注意的是,首先新建工程项目,在此目录下Add单元测试项目,还需要在单元测试项目中引用被测试的 ...
- week4--系统调用的工作机制
潘恒 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.使用库函数AP ...
- android开发之图表
在这里使用的插件为Mpchart,只以折线图为例.首先需要导入
- 安装phpredis扩展
本文是根据菜鸟教程中的内容而写的,因为按照教程中做法来操作,中间遇到一些问题,我在centos6.5和ubuntu16.4中都遇到了,所以写在这里.强烈建议你先看完这篇博客,然后再操作,能省不少事. ...