当前位置:   article > 正文

整合常用技术框架之 MongoDB 和 RabbitMQ_rabbitmq mongodb

rabbitmq mongodb

Spring Boot 整合 MongoDB

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 并添加如下内容之后保存:

  1. dbpath = /data/db #数据文件存放目录
  2. logpath = /logs/mongodb.log #日志文件存放目录
  3. port = 27017 #端口
  4. fork = true #以守护程序的方式启用,即在后台运行
  5. nohttpinterface = true
  6. auth=false
  7. bind_ip=0.0.0.0

6. 修改环境变量:vi /etc/profile

  1. export MONGODB_HOME=/usr/local/mongodb
  2. 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 文件中添加依赖:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-mongodb</artifactId>
  4. </dependency>

2. 在 application.yml 配置文件中添加 MongoDB 访问配置信息:

  1. spring:
  2. data:
  3. mongodb:
  4. uri: mongodb://******/students

3. 当前利用 Spring Boot 操作 MongoDB 比较常用的两种方式分别为:直接在 Dao 中注入 MongoTemplate 对象,及继承 MongoRepository。由于利用继承MongoRepository的方式和我们之前继承 JpaRepository 操作数据库非常类似。本文中将为大家演示如何利用 MongoTemplate 操作 MongoDB。

添加学生数据实体:

  1. public class Student {
  2. private String id;
  3. private String studentName;
  4. private Integer age;
  5. public Student(){}
  6. public Student(String id, String studentName, Integer age) {
  7. this.id = id;
  8. this.studentName = studentName;
  9. this.age = age;
  10. }
  11. public String getId() {
  12. return id;
  13. }
  14. public void setSid(String id) {
  15. this.id = id;
  16. }
  17. public String getStudentName() {
  18. return studentName;
  19. }
  20. public void setStudentName(String studentName) {
  21. this.studentName = studentName;
  22. }
  23. public Integer getAge() {
  24. return age;
  25. }
  26. public void setAge(Integer age) {
  27. this.age = age;
  28. }
  29. }

定义添加、删除、查询、修改学生信息接口:

  1. public interface IStudentService {
  2. /**
  3. * 新增学生信息
  4. * @param student
  5. */
  6. void addStudent(Student student);
  7. /**
  8. * 删除学生信息
  9. * @param id
  10. */
  11. void deleteStudentByIs(String id);
  12. /**
  13. * 根据主键查询学生信息
  14. * @param id
  15. * @return
  16. */
  17. Student findById(String id);
  18. /**
  19. * 根据学生姓名查询学生信息
  20. * @param studentName
  21. * @return
  22. */
  23. Student findStudentByStudentName(String studentName);
  24. /**
  25. * 更新学生信息
  26. * @param student
  27. */
  28. void updateStudentInfo(Student student);
  29. }

定义添加、删除、查询、修改学生信息接口实现类:

  1. @Service("stdentService")
  2. public class StudentServiceImpl implements IStudentService {
  3. @Autowired
  4. private MongoTemplate mongoTemplate;
  5. @Override
  6. public void addStudent(Student student) {
  7. mongoTemplate.save(student);
  8. }
  9. @Override
  10. public void deleteStudentById(String id) {
  11. Query query = new Query(Criteria.where("id").is(id));
  12. mongoTemplate.remove(query, Student.class);
  13. }
  14. @Override
  15. public Student findById(String id) {
  16. return mongoTemplate.findById(id, Student.class);
  17. }
  18. @Override
  19. public Student findStudentByStudentName(String studentName) {
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/917805
推荐阅读
相关标签
  

闽ICP备14008679号