SpringBoot 使用MongoDB處理JSON數據(增刪改查)


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

 @FieldJava類中字段名稱與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.刪除數據

 

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

 

 

 

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM