当前位置:   article > 正文

轻轻松松学习SpringBoot2:第二十五篇: Spring Boot和Mongodb整合(完整版)_springboot2整合mongodb

springboot2整合mongodb

今天主要讲的是Spring Boot和Mongodb整合

我们先来回顾一下前面章节的相关内容

前面我们讲了SpringBoot和mysql整合,并且讲了操作数据库的几种方式

SpringBoot+JPA

自动生成表

数据库操作


SpringBoot+JDBC

操作篇


SpringBoot+Mybatis

自动生成代码   操作篇


回到正题,mongodb的安装在这就不累述了,win版本的去官网下载,然后一直下一步即可,安装完之后需要db位置,类似命令如下mkdir db,然后进入到mongodb安装目录MongoDB\Server\4.0\bin,执行命令mongod --dbpath XX路径/db

然后再MongoDB\Server\4.0\bin目录下执行命令mongo.exe,即可进入mongodb语句输入栏


我们在mongo命令栏中输入show databases;看到默认有三个数据库,也可以使用命令 show dbs

下面我们直接进入代码操作

先看一下pom.xml文件新增依赖项

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-mongodb</artifactId>
  4. </dependency>
再看下代码结构和涉及到的代码分布


从上到下依次是MongoTestC.java,MongoTestDao.java,MongoTest.java,application.yml

分别对应着页面跳转类,操作mongodb数据库的类和实体类以及配置文件(此处只是做个demo,所以没有写service层,相关操作都写到了Controller中去了)

MongoTestC.java

  1. package com.example.smybatis.controller;
  2. import com.example.smybatis.dao.MongoTestDao;
  3. import com.example.smybatis.model.MongoTest;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. @RestController
  8. public class MongoTestC {
  9. @Autowired
  10. private MongoTestDao mtdao;
  11. @GetMapping(value="/test1")
  12. public void saveTest() throws Exception {
  13. MongoTest mgtest=new MongoTest();
  14. mgtest.setId(11);
  15. mgtest.setAge(33);
  16. mgtest.setName("ceshi");
  17. mtdao.saveTest(mgtest);
  18. }
  19. @GetMapping(value="/test2")
  20. public MongoTest findTestByName(){
  21. MongoTest mgtest= mtdao.findTestByName("ceshi");
  22. System.out.println("mgtest is "+mgtest);
  23. return mgtest;
  24. }
  25. @GetMapping(value="/test3")
  26. public void updateTest(){
  27. MongoTest mgtest=new MongoTest();
  28. mgtest.setId(11);
  29. mgtest.setAge(44);
  30. mgtest.setName("ceshi2");
  31. mtdao.updateTest(mgtest);
  32. }
  33. @GetMapping(value="/test4")
  34. public void deleteTestById(){
  35. mtdao.deleteTestById(11);
  36. }
  37. }

MongoTestDao.java

  1. package com.example.smybatis.dao;
  2. import com.example.smybatis.model.MongoTest;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.data.mongodb.core.MongoTemplate;
  5. import org.springframework.data.mongodb.core.query.Criteria;
  6. import org.springframework.data.mongodb.core.query.Query;
  7. import org.springframework.data.mongodb.core.query.Update;
  8. import org.springframework.stereotype.Component;
  9. @Component
  10. public class MongoTestDao {
  11. @Autowired
  12. private MongoTemplate mongoTemplate;
  13. /**
  14. * 创建对象
  15. */
  16. public void saveTest(MongoTest test) {
  17. mongoTemplate.save(test);
  18. }
  19. /**
  20. * 根据用户名查询对象
  21. * @return
  22. */
  23. public MongoTest findTestByName(String name) {
  24. Query query=new Query(Criteria.where("name").is(name));
  25. MongoTest mgt = mongoTemplate.findOne(query , MongoTest.class);
  26. return mgt;
  27. }
  28. /**
  29. * 更新对象
  30. */
  31. public void updateTest(MongoTest test) {
  32. Query query=new Query(Criteria.where("id").is(test.getId()));
  33. Update update= new Update().set("age", test.getAge()).set("name", test.getName());
  34. //更新查询返回结果集的第一条
  35. mongoTemplate.updateFirst(query,update,MongoTest.class);
  36. //更新查询返回结果集的所有
  37. // mongoTemplate.updateMulti(query,update,TestEntity.class);
  38. }
  39. /**
  40. * 删除对象
  41. * @param id
  42. */
  43. public void deleteTestById(Integer id) {
  44. Query query=new Query(Criteria.where("id").is(id));
  45. mongoTemplate.remove(query,MongoTest.class);
  46. }
  47. }

MongoTest.java

  1. package com.example.smybatis.model;
  2. public class MongoTest {
  3. private Integer id;
  4. private Integer age;
  5. private String name;
  6. public Integer getId() {
  7. return id;
  8. }
  9. public void setId(Integer id) {
  10. this.id = id;
  11. }
  12. public Integer getAge() {
  13. return age;
  14. }
  15. public void setAge(Integer age) {
  16. this.age = age;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. }

application.yml

  1. spring:
  2. data:
  3. mongodb:
  4. uri: mongodb://localhost:27017/test

此处我用的是本地安装的mongodb,所以没有用户名和密码,有用户名和密码的格式是

spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test,其中name是用户名,pass是密码

如果要配置多个数据库,则中间用","分割,例如

spring.data.mongodb.uri=mongodb://192.168.1.1:20000,192.168.1.2:20000,192.168.252.12:20000/test


下面我们启动程序进行测试

1)新增

我们先在浏览器输入http://localhost:1234/test1

调用了controller中的新增方法,此时数据库应该有值,我们执行相关命令看一下


我们发现,我们使用use test命令创建新库的时候,当库里还没有表的时候,我们使用show dbs是看不到这个库的,

当我们在浏览器敲了回车之后,我们发现可以看到test库了,同时test库中也有了mongoTest表,使用db.mongoTest.find()命令就可以看到数据了,符合要求

2)查询

我们在浏览器输入http://localhost:1234/test2

即可查看到刚才插入的那条数据


3)修改

我们在浏览器输入http://localhost:1234/test3

然后去数据库看一下


果然发生了变化

4)删除

我们在浏览器输入http://localhost:1234/test4

然后去数据库看一下

我们发现,数据没有了,因为已经被删掉了,但是表还是存在的,库也可以看到


贴士:有童鞋问我,如果是阿里云如何连接,阿里云分内外网ip,如果本地要连接,同时还受防火墙等影响,建议询问运维同事


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号