1.开发环境
IDEA、Maven、SpringBoot2.0.4、Jdk1.8、MongoDB4.0、MongoDB Compass Community、PostMan
2.MongoDB
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
3.配置开始
3.1 Maven 相关配置
在pox.xml文件中添加spring-boot-starter-data-mongodb引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
3.2 资源文件yml配置
笔者这里使用yml配置方式,配置时要注意缩进!!!!
spring:
data:
mongodb:
# uri: mongodb://127.0.0.1:27017/MongoDBTest
database: MongoDBTest
host: 127.0.0.1
port: 27017
3.3 创建实体类
package com.fanyq.mongo.model;
import lombok.Data;
import org.springframework.data.annotation.Id;
import java.util.Date;
@Data
public class Book {
@Id
private String id;
//价格
private Integer price;
//书名
private String name;
//简介
private String info;
//出版社
private String publish;
//创建时间
private Date createTime;
//修改时间
private Date updateTime;
}
3.4 创建service类
Service中主要来实现CURD的操作
此处需要说明的是Mongodb的修改操作大致有3种:mongoTemplate.updateFirst操作:修改第一条mongoTemplate.updateMulti操作:修改符合条件的所有this.mongoTemplate.upsert操作:修改时如果不存在则添加.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class MongoDbService {
private static final Logger logger = LoggerFactory.getLogger(MongoDbService.class);
@Autowired
private MongoTemplate mongoTemplate;
/**
* 保存对象
*
* @param book
* @return
*/
public String saveObj(Book book) {
logger.info("--------------------->[MongoDB save start]");
book.setCreateTime(new Date());
book.setUpdateTime(new Date());
mongoTemplate.save(book);
return "添加成功";
}
/**
* 查询所有
*
* @return
*/
public List<Book> findAll() {
logger.info("--------------------->[MongoDB find start]");
return mongoTemplate.findAll(Book.class);
}
/***
* 根据id查询
* @param id
* @return
*/
public Book getBookById(String id) {
logger.info("--------------------->[MongoDB find start]");
Query query = new Query(Criteria.where("_id").is(id));
return mongoTemplate.findOne(query, Book.class);
}
/**
* 根据名称查询
*
* @param name
* @return
*/
public Book getBookByName(String name) {
logger.info("--------------------->[MongoDB find start]");
Query query = new Query(Criteria.where("name").is(name));
return mongoTemplate.findOne(query, Book.class);
}
/**
* 更新对象
*
* @param book
* @return
*/
public String updateBook(Book