赞
踩
MongoDB 是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要以 key、value 方式存储数据;其支持的数据结构非常松散,是类似 JSON 的 BJSON 格式,因此其存储数据非常灵活。随着近几年软件行业的蓬勃发展,用户的需求、业务的多样化,引发了软件系统自身数据的多样化,从而使 MongoDB 成为 NoSQL 数据库中的皎皎者。
传统关系数据库主要由数据库、表、记录三个层次概念组成,而 MongoDB 是由数据库、集合、文档三个层次组成。MongoDB 相对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了其存储数据非常灵活的特点。
MongoDB 适合对大量或者无固定格式的数据进行存储,如日志、缓存等。对事物支持较弱,不适用于复杂的多集合的级联查询。
CentOS 7安装 MongoDB
1. 新建目录 /usr/local/software/
,
执行命令 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.12.tgz
下载安装文件;
2. 执行命令解压:tar -zxvf mongodb-linux-x86_64-3.2.12.tgz
;
3. 将解压后文件移动到指定目录:mv mongodb-linux-x86_64-3.2.12/ /usr/local/mongodb
;
4. 接着,执行命令:mkdir -p /data/db /logs
;
5. 执行命令 cd bin
,新建配置文件 vim mongodb.conf
并添加如下内容之后保存:
- dbpath = /data/db #数据文件存放目录
- logpath = /logs/mongodb.log #日志文件存放目录
- port = 27017 #端口
- fork = true #以守护程序的方式启用,即在后台运行
- nohttpinterface = true
- auth=false
- bind_ip=0.0.0.0
6. 修改环境变量:vi /etc/profile
:
- export MONGODB_HOME=/usr/local/mongodb
- export PATH=$PATH:$MONGODB_HOME/bin
保存后,重启系统配置:source /etc/profile
。
7. 进入目录 /usr/local/mongodb/bin
,启动 mongod -f mongodb.conf
;
8. 执行命令./mongo
;
9. 执行命令创建数据库 use students
,并添加用户:db.createUser({user:"root",pwd:"123456",roles:[{role:"readWrite",db:"students"}]})
。
下面接着演示在工作中如何将 Spring Boot 和 MongoDB 进行整合。
1. 在 pom 文件中添加依赖:
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-mongodb</artifactId>
- </dependency>
2. 在 application.yml 配置文件中添加 MongoDB 访问配置信息:
- spring:
- data:
- mongodb:
- uri: mongodb://******/students
3. 当前利用 Spring Boot 操作 MongoDB 比较常用的两种方式分别为:直接在 Dao 中注入 MongoTemplate 对象,及继承 MongoRepository。由于利用继承MongoRepository的方式和我们之前继承 JpaRepository 操作数据库非常类似。本文中将为大家演示如何利用 MongoTemplate 操作 MongoDB。
添加学生数据实体:
- public class Student {
- private String id;
- private String studentName;
- private Integer age;
-
- public Student(){}
-
- public Student(String id, String studentName, Integer age) {
- this.id = id;
- this.studentName = studentName;
- this.age = age;
- }
-
- public String getId() {
- return id;
- }
-
- public void setSid(String id) {
- this.id = id;
- }
-
- public String getStudentName() {
- return studentName;
- }
-
- public void setStudentName(String studentName) {
- this.studentName = studentName;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
- }
定义添加、删除、查询、修改学生信息接口:
- public interface IStudentService {
- /**
- * 新增学生信息
- * @param student
- */
- void addStudent(Student student);
-
- /**
- * 删除学生信息
- * @param id
- */
- void deleteStudentByIs(String id);
-
- /**
- * 根据主键查询学生信息
- * @param id
- * @return
- */
- Student findById(String id);
-
- /**
- * 根据学生姓名查询学生信息
- * @param studentName
- * @return
- */
- Student findStudentByStudentName(String studentName);
-
-
- /**
- * 更新学生信息
- * @param student
- */
- void updateStudentInfo(Student student);
- }
定义添加、删除、查询、修改学生信息接口实现类:
- @Service("stdentService")
- public class StudentServiceImpl implements IStudentService {
- @Autowired
- private MongoTemplate mongoTemplate;
-
- @Override
- public void addStudent(Student student) {
- mongoTemplate.save(student);
- }
-
- @Override
- public void deleteStudentById(String id) {
- Query query = new Query(Criteria.where("id").is(id));
-
- mongoTemplate.remove(query, Student.class);
- }
-
- @Override
- public Student findById(String id) {
- return mongoTemplate.findById(id, Student.class);
- }
-
- @Override
- public Student findStudentByStudentName(String studentName) {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。