目录
一、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;
@RestController
public class MgdbController {
@Autowired
private 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;
@Service
public class MgdbDataProcessImpl implements MgdbDataProcessService{
@Autowired
private MongoTemplate mongoTemplate;
@Override
public 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);
}
@Override
public 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("插入成功");
}
@Override
public 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("修改成功");
}
@Override
public JSONResult removeTest() {
Query query = new Query();
query.addCriteria(Criteria.where("_id").is("670f83635f62f209a8335335"));
mongoTemplate.remove(query,"测试集合");
return JSONResult.ok("删除成功");
}
@Override
public JSONResult queryAllTest() {
List<TestCollection> result = mongoTemplate.findAll(TestCollection.class, "测试集合");
return JSONResult.ok(result);
}
}