1.maven 引入pom文件包
<!-- mongodb -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
2.application.properties 或者application.yml 配置连接MongoDB
#非密码链接
spring.data.mongodb.uri=mongodb://localhost:27017/my-mongo
#密码链接
spring.data.mongodb.uri=mongodb://用户名:密码@ip:27017/my-mongo
3.创建实体类集合(例如:DemoJson >> demo_json)
备注:
@Document 表示
Java
的类名对应的MongoDB
的集合名称。
@Id
映射MongoDB
的_id
字段,若没有使用这两个注解,则字段中名称为id
的字段将自动映射到_id
@Field
将Java
类中字段名称与MongoDB
集合中字段名称不一致的字段映射成一致的。使用驼峰命名的apiName
字段,想要映射成MongoDB
中的api_name
字段就可以使用@Field
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
*
* @author zyx
*/
@Document(collection = "demo_json")
@Data
public class DemoJson {
@Id
private String id;
private String name;
private String date;
@Field(value = "api_name")
private String apiName;
@Field(value = "result_json")
private JSONObject resultJson;
}
4.service、impl层,增删改查
备注:注入MongoTemplate
类可实现对MongoDB
的增删改查操作。
service
package com.stars.base.mongo.service;
import com.stars.base.mongo.base.DemoJson;
import java.util.List;
/**
* @author zyx
*/
public interface DemoJsonService {
/**
* 根据name获取所有数据 find查询集合,findOne查询一个
* @param name
* @return
*/
List<DemoJson> getDemoJsonList(String name);
/**
* 根据name,apiName 获取单独一条数据 find查询集合,findOne查询一个
* @param name
* @param apiName
* @return
*/
DemoJson getDemoJsonOne(String name,String apiName);
/**
* 插入数据 insert插入重复数据会报异常,save对已存在的数据进行更新
* @param demoJson
*/
void insertDemo(DemoJson demoJson);
/**
* 删除
* @param name
*/
void delDemo(String name);
/**
* 修改 updateFirst更新一个,updateMulti更新多个
* @param name
*/
void updateDemo(String name);
}
serviceImpl
package com.stars.base.mongo.service.impl;
import com.stars.base.mongo.base.DemoJson;
import com.stars.base.mongo.service.DemoJsonService;
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 javax.annotation.Resource;
import java.util.List;
/**
* @author zyx
*/
@Service
public class DemoJsonServiceImpl implements DemoJsonService {
@Resource
private MongoTemplate mongoTemplate;
/**
* 根据name获取所有数据 find查询集合,findOne查询一个
* @param name
* @return
*/
@Override
public List<DemoJson> getDemoJsonList(String name) {
Criteria criteria = Criteria.where("name").is(name);
Query query = new Query();
query.addCriteria(criteria);
return mongoTemplate.find(query,DemoJson.class);
}
/**
* 根据name,apiName 获取单独一条数据 find查询集合,findOne查询一个
* @param name
* @param apiName
* @return
*/
@Override
public DemoJson getDemoJsonOne(String name, String apiName) {
Criteria criteria = Criteria.where("name").is(name);
Criteria criteria1 = Criteria.where("api_name").is(apiName);
Query query = new Query();
query.addCriteria(criteria);
query.addCriteria(criteria1);
return mongoTemplate.findOne(query,DemoJson.class);
}
/**
* 插入数据 insert插入重复数据会报异常,save对已存在的数据进行更新
* @param demoJson
*/
@Override
public void insertDemo(DemoJson demoJson) {
mongoTemplate.insert(demoJson);
//或者 mongoTemplate.save(demoJson);
}
/**
* 删除
* @param name
*/
@Override
public void delDemo(String name) {
Criteria criteria = Criteria.where("name").is(name);
Query query = new Query();
query.addCriteria(criteria);
mongoTemplate.remove(query,DemoJson.class);
}
/**
* 修改 updateFirst更新一个,updateMulti更新多个
* @param name
*/
@Override
public void updateDemo(String name) {
Criteria criteria = Criteria.where("name").is(name);
Query query = new Query();
query.addCriteria(criteria);
Update update = Update.update("api_name", "apiDemoUp")
.set("date", "20211206");
mongoTemplate.updateFirst(query, update, DemoJson.class);
}
}
5.controller,调用
package com.stars.base.mongo.controller;
import com.alibaba.fastjson.JSONObject;
import com.stars.base.mongo.base.DemoJson;
import com.stars.base.mongo.service.DemoJsonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author zyx
*/
@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoJsonController {
@Resource
private DemoJsonService demoJsonService;
/**
* 根据map查询单条数据
* @param map
* @return
*/
@RequestMapping("/query")
public Map query(@RequestBody Map<String, String> map) {
String name = map.get("name");
String apiName = map.get("apiName");
DemoJson demoJson = demoJsonService.getDemoJsonOne(name,apiName);
Map result = new HashMap(1);
result.put("code","0000");
result.put("msg","OK");
result.put("result",demoJson);
return result;
}
/**
* 根据条件查询所有数据
* @param map
* @return
*/
@RequestMapping("/queryList")
public Map queryList(@RequestBody Map<String, String> map) {
String name = map.get("name");
List<DemoJson> demoJsonList = demoJsonService.getDemoJsonList(name);
Map result = new HashMap(1);
result.put("code","0000");
result.put("msg","OK");
result.put("result",demoJsonList);
return result;
}
/**
* 新增Json
* @return
*/
@RequestMapping("/addDemoJson")
public Map addDemoJson() {
DemoJson demoJson = new DemoJson();
demoJson.setName("测试json");
demoJson.setApiName("apiDemo");
demoJson.setDate("20211205");
//json字符串
String jsonStr = "{\"code\":\"0000\",\"msg\":\"OK\",\"result\":[{\"DATA\":[{\"ID\":\"001\",\"STATUS\":\"在营(开业)\",\"NAME\":\"测试名称\",\"DATE\":\"20211205\",\"TEL\":\"4009000\",\"REMARK\":\"备注\"}],\"SIZE\":1,\"MODEL\":\"DEMOINFO\",\"TOTALCOUNT\":1}],\"successFlag\":true}";
//json字符串转换为jsonObject
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
demoJson.setResultJson(jsonObject);
//入库MongoDB
demoJsonService.insertDemo(demoJson);
Map result = new HashMap(1);
result.put("code","0000");
result.put("msg","OK");
return result;
}
/**
* 删除数据
* @param map
* @return
*/
@RequestMapping("/delDemo")
public Map delDemo(@RequestBody Map<String, String> map) {
String name = map.get("name");
demoJsonService.delDemo(name);
Map result = new HashMap(1);
result.put("code","0000");
result.put("msg","删除成功");
return result;
}
/**
* 修改数据
* @param map
* @return
*/
@RequestMapping("/updateDemo")
public Map updateDemo(@RequestBody Map<String, String> map) {
String name = map.get("name");
demoJsonService.updateDemo(name);
Map result = new HashMap(1);
result.put("code","0000");
result.put("msg","修改成功");
return result;
}
}
6.postman测试接口
1.新增接口
查询MongoDB库 >> my-mongo库中集合 demo_json
2.查询接口
3.修改接口
查询刚刚那条数据,发现值已经改了
4.删除数据
库中查询,发现数据已经删除