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.刪除數據

庫中查詢,發現數據已經刪除

