目录
一、Mongodb概念
二、SpingBoot集成Mongodb
三、实现增删改查操作
一、Mongodb概念
MongoDB是一个开源的文档型数据库,属于NoSQL数据库中的一种。它使用BSON(类似于JSON)格式存储数据,具有高性能、高可用性和易于扩展的特点。MongoDB的主要特点包括:
面向文档:MongoDB存储的是BSON格式的数据,这是一种类似JSON的二进制格式,可以存储复杂的数据结构,如数组和嵌套文档。
分布式:MongoDB支持水平扩展,可以通过分片技术将数据分布在多个服务器上,实现高可用性和负载均衡。
高性能:MongoDB提供了丰富的索引类型,支持快速查询和更新操作。此外,它还支持多种查询优化策略,如投影、排序等。
灵活的数据模型:MongoDB允许用户在运行时修改数据结构,无需进行复杂的表结构变更。
高可用性:MongoDB支持自动故障转移和数据冗余,可以在主节点故障时自动切换到备用节点,确保数据的持久性和一致性。
支持多种编程语言:MongoDB提供了多种编程语言的驱动程序和库,如Java、Python、C#等,方便开发者进行集成和使用。
二、SpingBoot集成Mongodb
打开命令行可以看到版本,也可以输入命令:db.version()来查看版本
pom配置
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.12.8</version></dependency>
配置application.properties
spring.data.mongodb.uri=mongodb://localhost:27017/dataBaseName
这里参数dataBaseName需要改成你自己要连接的库名
三、实现增删改查操作
以这张数据表为例子
1.创建实体类
package com.kero99.pojo;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.mapping.Document;import org.springframework.data.mongodb.core.mapping.Field;import com.alibaba.fastjson.annotation.JSONField;@Document(collection = "测试集合")public class TestCollection {@Id @Field("id") private String id; @Field("testName") private String testName; @Field("testAge") private Integer testAge; @Field("updateTime") private String updateTime;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getTestName() {return testName;}public void setTestName(String testName) {this.testName = testName;}public Integer getTestAge() {return testAge;}public void setTestAge(Integer testAge) {this.testAge = testAge;}public String getUpdateTime() {return updateTime;}public void setUpdateTime(String updateTime) {this.updateTime = updateTime;} }
2.实现增删改查mongdb操作
MgdbController实现
package com.kero99.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.kero99.pojo.JSONResult;import com.kero99.service.MgdbDataProcessService;@RestControllerpublic class MgdbController {@Autowiredprivate MgdbDataProcessService mgdbDataProcessService;@RequestMapping("/queryTest")public JSONResult queryTest() {JSONResult result=mgdbDataProcessService.queryTest();return result;}@RequestMapping("/queryAllTest")public JSONResult queryAllTest() {JSONResult result=mgdbDataProcessService.queryAllTest();return result;}@RequestMapping("/addTest")public JSONResult addTest() {JSONResult result=mgdbDataProcessService.addTest();return result;}@RequestMapping("/editTest")public JSONResult editTest() {JSONResult result=mgdbDataProcessService.editTest();return result;}@RequestMapping("/removeTest")public JSONResult removeTest() {JSONResult result=mgdbDataProcessService.removeTest();return result;}}
ServiceImpl实现
package com.kero99.service.impl;import java.time.LocalDateTime;import java.time.ZoneId;import java.util.Date;import java.util.List;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 com.alibaba.fastjson2.JSON;import com.alibaba.fastjson2.JSONObject;import com.kero99.pojo.JSONResult;import com.kero99.pojo.TestCollection;import com.kero99.pojo.UserInfo;import com.kero99.service.MgdbDataProcessService;import com.kero99.utils.DateUtils;import com.kero99.utils.UUIDUtil;@Servicepublic class MgdbDataProcessImpl implements MgdbDataProcessService{@Autowired private MongoTemplate mongoTemplate;@Overridepublic JSONResult queryTest() { Query query = new Query(); query.addCriteria(Criteria.where("testName").is("111")); List<TestCollection> userInfo = mongoTemplate.find(query, TestCollection.class,"测试集合"); return JSONResult.ok(userInfo);}@Overridepublic JSONResult addTest() {TestCollection testCollection=new TestCollection();testCollection.setId(UUIDUtil.generateUUID());testCollection.setTestName("111");testCollection.setTestAge(22222);testCollection.setUpdateTime(DateUtils.dateToString(new Date())); String jsonString = JSONObject.toJSONString(testCollection); mongoTemplate.insert(jsonString,"测试集合");return JSONResult.ok("插入成功");}@Overridepublic JSONResult editTest() { Query query = new Query(); query.addCriteria(Criteria.where("_id").is("670f83635f62f209a8335335")); Update update = new Update(); update.set("testName", "555"); mongoTemplate.updateMulti(query, update, "测试集合");return JSONResult.ok("修改成功");}@Overridepublic JSONResult removeTest() { Query query = new Query(); query.addCriteria(Criteria.where("_id").is("670f83635f62f209a8335335")); mongoTemplate.remove(query,"测试集合");return JSONResult.ok("删除成功");}@Overridepublic JSONResult queryAllTest() { List<TestCollection> result = mongoTemplate.findAll(TestCollection.class, "测试集合"); return JSONResult.ok(result);}}