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.删除数据

 

   库中查询,发现数据已经删除

 

 

 

 

  

  

posted @ 2021-12-05 21:30  巴适的哼  阅读(3923)  评论(0编辑  收藏  举报