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.刪除數據
庫中查詢,發現數據已經刪除