springboot整合mongodb

1.mongodb的安装和简介

1.1简介

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

1.2安装

网上安装的教程也比较多,我在这里就不再多说了。直接提供一下我自己的db安装包和可视化安装包,这里的版本可能有点旧,需要新的包可以自行去网上下载!

数据库链接:https://pan.baidu.com/s/1Pu7ijrzmzkYEp-jRgHENbA     提取码:7cz2 

可视化工具链接:https://pan.baidu.com/s/1ZBe_F5Eab1KYk6GAVono6w  提取码:9g55 

1.3配置环境变量和检查安装情况

这里的配置类似于jdk的配置,不再多说!查看安装和启动数据库

2.springboot集成mongodb

为了节省篇幅,好多注释和空行都去掉了,大家见谅!

2.1pom文件中maven的引入

<!-- mongodb -->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2.2properties文件配置

#################mongodb################
#spring.data.mongodb.uri=mongodb://username:password@localhost:27017/test
spring.data.mongodb.uri=mongodb://localhost:27017/springboot

2.3dao层的编写

package com.lengmo.dao;
 
import com.lengmo.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.List;
 
@Component
public class MongoDbDao {
 @Autowired
 private MongoTemplate mongoTemplate;
 public void save(Student s) {
 mongoTemplate.save(s);
 }
 public Student get(Query query) {
 return mongoTemplate.findOne(query,Student.class);
 }
 public List<Student> findAll() {
 return mongoTemplate.findAll(Student.class);
 }
 public void update(Query query, Update update) {
 mongoTemplate.updateMulti(query,update,Student.class);
 }
 public void delete(Query query) {
 mongoTemplate.remove(query,Student.class);
 }
}

2.4service层的编写

这里要熟悉mongodb的一些常规操作方法,多用多练习即可!!!!

package com.lengmo.service;
 
import com.lengmo.dao.MongoDbDao;
import com.lengmo.entity.Hobbies;
import com.lengmo.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
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.List;
 
@Service
public class MongoDbService {
 @Autowired
 private MongoDbDao mongoDbDao;
 public void save() {
 Student s=new Student();
 s.setName("lis");
 s.setAge(17);
 s.setSex(1);
 s.setHeight(182);
 Hobbies h=new Hobbies();
 h.setHname("swing");
 s.setHobbies(h);
 mongoDbDao.save(s);
 }
 public Student get() {
 //and查询
 /* Criteria criteriaName=Criteria.where("name").is("lisi");
 Criteria criteriaAage=Criteria.where("age").is(17);
 Criteria andCriteria = new Criteria();
 andCriteria.andOperator(criteriaName,criteriaAage);
 Query query=new Query(andCriteria);*/
 //or查询
 Criteria criteriaName=Criteria.where("name").is("lisi");
 Criteria criteriaAage=Criteria.where("age").gt(16);
 Criteria orCriteria = new Criteria();
 orCriteria.orOperator(criteriaName,criteriaAage);
 Query query=new Query(orCriteria);
 
 return mongoDbDao.get(query);
 }
 public List<Student> findAll() {
 return mongoDbDao.findAll();
 }
 public void update() {
 Query query=new Query(Criteria.where("name").is("zhangsan"));
 Update update=new Update();
 update.set("age",30);
 update.set("height",188);
 update.set("hobbies.hname","basketball");
 mongoDbDao.update(query,update);
 }
 public void delete() {
 Query query=new Query(Criteria.where("name").is("zhangsan"));
 mongoDbDao.delete(query);
 }
}

2.5conreoller层的编写

package com.lengmo.controller;
 
import com.lengmo.entity.Student;
import com.lengmo.service.MongoDbService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
 
@RestController
@RequestMapping("/mongodb")
public class MongoDbController {
 @Autowired
 private MongoDbService mongoDbService;
 @RequestMapping("/save")
 public void save(){
 mongoDbService.save();
 }
 @RequestMapping("/get")
 public Student get(){
 return mongoDbService.get();
 }
 @RequestMapping("/findAll")
 public List<Student> findAll(){
 return mongoDbService.findAll();
 }
 
 @RequestMapping("/update")
 public void update(){
 mongoDbService.update();
 }
 @RequestMapping("/delete")
 public void delete(){
 mongoDbService.delete();
 }
}

2.6实体类层的编写(两个类放一起了,你们记得分开)

package com.lengmo.entity;
import lombok.Data;
import javax.persistence.Id;
 
@Data
//之所以没有像 mysql那样需要@table标签去标注我们的表名与实体类的对应关系。是因为 mongodb默认类名即与表名对应。
public class Student{
 @Id
 private String id;
 private String name;
 private Integer age;
 private Integer sex;
 private Integer height;
 private Hobbies hobbies;
}
 
 
 
package com.lengmo.entity;
import lombok.Data;
 
@Data
public class Hobbies {
 private String hname;
}

至此所有的整合就完成了,接下来就是去验证各个方法的使用了!

作者:Demon丶冷漠原文地址:https://blog.csdn.net/u014135369/article/details/112357997

%s 个评论

要回复文章请先登录注册