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

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

     

     

      

      

  • 相关阅读:
    移动端链接、点击事件、输入框去除背景高亮
    Quartz.Net与MVC结合定时任务
    Win10上使用SVN遇到的一些问题
    Win7上的ASP.NET MVC3项目在Win10上运行的一个坑
    《SQL必知必会》学习笔记(二)
    《SQL必知必会》学习笔记(一)
    数据库知识总结(表结构操作)
    搭建三层架构(ASP.NET MVC+EF)
    python线程中的全局变量与局部变量
    ADO.NET Entity Framework学习笔录(一)
  • 原文地址:https://www.cnblogs.com/xianshen/p/15647223.html
Copyright © 2020-2023  润新知