当前位置: 首页 > article >正文

从0开始搭建一个生产级SpringBoot2.0.X项目(十三)SpringBoot连接MongoDB

前言

最近有个想法想整理一个内容比较完整springboot项目初始化Demo。

SpringBoot连接MongoDB

一、pom文件新增依赖

        <!--mongodb-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <!--mongodb-->

二、增加Mongo配置

spring:
  data:
    mongodb:
      host: 127.0.0.1
      port: 27017
      database: murg

 三、创建简易的工具类

package com.murg.bootdemo.util;

import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.UpdateDefinition;
import org.springframework.stereotype.Component;

import java.util.Collection;
import java.util.List;
@Component
public class MongoUtil {
    @Autowired
    private MongoTemplate mongoTemplate;

    public MongoOperations getMongoTemplate() {
        return mongoTemplate;
    }

    public <T> T insert(T objectToSave, String collectionName) {
        return mongoTemplate.insert(objectToSave, collectionName);
    }

    public <T> Collection<T> insert(Collection<? extends T> batchToSave, String collectionName) {
        return mongoTemplate.insert(batchToSave, collectionName);
    }

    public <T> T save(T objectToSave) {
        return mongoTemplate.save(objectToSave);
    }

    public <T> T save(T objectToSave, String collectionName) {
        return mongoTemplate.save(objectToSave, collectionName);
    }

    public <T> T findOne(Query query, Class<T> entityClass) {
        return mongoTemplate.findOne(query, entityClass);
    }

    public <T> T findOne(Query query, Class<T> entityClass, String collectionName) {
        return mongoTemplate.findOne(query, entityClass, collectionName);
    }

    public boolean exists(Query query, String collectionName) {
        return mongoTemplate.exists(query, collectionName);
    }

    public boolean exists(Query query, Class<?> entityClass, String collectionName) {
        return mongoTemplate.exists(query, entityClass);
    }

    public <T> List<T> find(Query query, Class<T> entityClass, String collectionName) {
        return mongoTemplate.find(query, entityClass, collectionName);
    }

    public long count(Query query, String collectionName) {
        return mongoTemplate.count(query, collectionName);
    }

    public UpdateResult updateMulti(Query query, UpdateDefinition update, Class<?> entityClass, String collectionName) {
        return mongoTemplate.updateMulti(query, update, entityClass, collectionName);
    }

    public DeleteResult remove(Object object, String collectionName) {
        return mongoTemplate.remove(object, collectionName);
    }
}

三、测试类测试

package com.murg.bootdemo;


import com.murg.bootdemo.util.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.murg.bootdemo.util.MongoUtil;
import java.util.HashMap;
import java.util.Map;

@ActiveProfiles("dev")
@RunWith(SpringRunner.class)
@SpringBootTest(classes={BootdemoApplication.class})// 指定启动类
@Slf4j
public class MongonDbTests {
    @Autowired
    MongoUtil mongoUtil;
    @Test
    public void testMongonDb() throws InterruptedException {
        Map map = new HashMap();
        map.put("id","1");
        map.put("userid","00001");
        map.put("name","张三");
        /*-----------新增-----------------*/
        Map usermap = mongoUtil.insert(map, "user");
        log.info("新增user: {}", JsonUtil.toJson(usermap));


        //Criteria类可以用于编写特定的执行条件,与Query对象进行组合使用

        //使用criatira对象去调用andOperator()来编写具体具体条件;

        //**单个条件**的编写方式为:Criteria.where("id").is(id);

        //如果是**多个条件**,则Criteria.where("id").is(id)**,and("name").is(name)**

        // Criteria.where("userid").is(usermap.get("userid"));

        //再把criatira对象传入query对象即可

        //为了省略Criteria对象的写法,此处可以直接利用query对象来调用addCriteria()来编写条件就行

        /*-----------查询-----------------*/
        Query query = new Query(Criteria.where("userid").is(usermap.get("userid")));
        usermap = mongoUtil.findOne(query, Map.class, "user");
        log.info("one: {}", JsonUtil.toJson(usermap));

        /*-----------修改-----------------*/
        //名字更新成李四
        Update update = new Update();
        update.set("name", "李四");
        mongoUtil.updateMulti(query, update,  Map.class, "user");
        usermap = mongoUtil.findOne(query, Map.class, "user");
        log.info("one: {}", JsonUtil.toJson(usermap));

    }




}

运行结果如下

mongodb数据


http://www.kler.cn/a/391001.html

相关文章:

  • webpack loader全解析,从入门到精通(10)
  • 1小时构建Vue3知识体系之vue的生命周期函数
  • 实验一:自建Docker注册中心
  • 实时渲染技术如何助力3D虚拟展厅?
  • Vite初始化Vue3+Typescrpt项目
  • 券商隔夜单自动下单交易接口
  • 请求接口时跨域问题详细解决方案
  • 前端开发调试之 PC 端调试
  • 使用 `RestTemplate` 获取二进制数据并返回 `byte[]`:解决方案与示例
  • Java 多态 (Polymorphism)详解
  • 智能社区服务小程序+ssm
  • MySQL数据库:SQL语言入门 (学习笔记)
  • ubuntu 20.04添加ros官方的软件源(解决下载ros软件包出现的E 无法定位软件包的问题)
  • ERP学习笔记-预处理eeglab
  • Transformer模型中的位置编码介绍
  • 群晖 Docker 容器文件夹出现未知用户 UID 1000
  • 开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频
  • 云计算在教育领域的应用
  • 数据库基础(10) . MySQL函数
  • 【MATLAB源码-第291期】基于matlab的AMI编码解码系统仿真,输出各个节点波形。
  • XML 现实案例:深入解析与应用
  • 斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段
  • 【动手学电机驱动】STM32-FOC(5)基于 IHM03 的无感 FOC 控制
  • 【Chrono Engine学习总结】5-sensor-5.3-LiDAR扫描顺序、时间戳计算与去畸变
  • AttriPrompter:基于属性语义的自动提示,用于通过视觉-语言预训练模型实现零样本细胞核检测|文献速递-基于深度学习的病灶分割与数据超分辨率
  • 【JavaEE初阶】多线程上部