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

Java SpringBoot MongoPlus 使用MyBatisPlus的方式,优雅的操作MongoDB

Java SpringBoot MongoPlus 使用MyBatisPlus的方式,优雅的操作MongoDB

    • 介绍
    • 特性
    • 安装
      • 新建SpringBoot工程
      • 引入依赖
      • 配置文件
    • 使用
      • 新建实体类
      • 创建Service
      • 测试类进行测试
        • 新增方法
        • 查询方法
    • 官方网站
    • 获取本项目案例代码

image-20240704134601333

介绍

MongoPlus

Mongo-Plus(简称 MP)是一个 MongoDB 的操作工具,可和现有mongoDB框架结合使用,为简化开发、提高效率而生。

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 5 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持自定义全局通用操作:支持全局通用方法注入
  • 支持无实体类情况下的操作
  • 支持动态数据源
  • 支持逻辑删除、防止全集合更新和删除、自动填充等等功能

安装

新建SpringBoot工程

采用的是IDEA新建的工程

image-20240704135503380

引入依赖

pom文件增加以下内容:

全部增加在project标签下面

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/>
</parent><dependencies><!-- mongo-plus依赖 --><dependency><groupId>com.gitee.anwena</groupId><artifactId>mongo-plus-boot-starter</artifactId><version>2.0.9.3</version></dependency><!-- boot容器依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- lombok依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- hutool工具依赖 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.5</version></dependency>
</dependencies>

增加完后执行下载包命令

mvn clean install

最后重新加载maven依赖

配置文件

mongo-plus:data:mongodb:host: 127.0.0.1   #ipport: 27017   #端口database: demo    #数据库名username: root    #用户名,没有可不填(若账号中出现@,!等等符号,不需要再进行转码!!!)password: root    #密码,同上(若密码中出现@,!等等符号,不需要再进行转码!!!)authenticationDatabase: admin     #验证数据库connectTimeoutMS: 50000   #在超时之前等待连接打开的最长时间(以毫秒为单位)log: true

配置自己的数据库以及账号密码

使用

新建实体类

@Data
@CollectionName("astarDemo")
public class AstarDemoEntity {/*** 使用ID注解,标注此字段为MongoDB的_id,或者继承BaseModelID类*/@ID(type = IdTypeEnum.ASSIGN_ID)private String id;private String name;private int age;private String email;}

创建Service

编写Service下的AstarDemoService和实现类AstarDemoServiceImpl,像MyBatisPlus一样

public interface AstarDemoService extends IService<AstarDemoEntity> {
}
public class AstarDemoServiceImpl extends ServiceImpl<AstarDemoEntity> implements AstarDemoService {
}

测试类进行测试

新增方法
@ContextConfiguration(classes = MongoPlusApp.class)
@SpringBootTest
public class AstarDemoTest {@Autowiredprivate AstarDemoService astarDemoService;@Testpublic void insert() {AstarDemoEntity entity = new AstarDemoEntity();entity.setName("一颗星");entity.setAge(111);entity.setEmail("xxx@aaa.email");astarDemoService.save(entity);}
}

运行测试

控制台已经把日志给打印出来了

image-20240704142516312

接下来我们看数据库是否存在

image-20240704142552267

数据库中也存在数据

查询方法
@Test
public void query() {LambdaQueryChainWrapper<AstarDemoEntity> lambdaQuery = astarDemoService.lambdaQuery();// age为111的lambdaQuery.eq(AstarDemoEntity::getAge, 111);List<AstarDemoEntity> list = astarDemoService.list(lambdaQuery);list.forEach(System.out::println);
}

image-20240704143313363

官方网站

官方网址

获取本项目案例代码

获取本项目代码

公粽号:一颗星宇宙

发送mongo获取

相关文章:

Java SpringBoot MongoPlus 使用MyBatisPlus的方式,优雅的操作MongoDB

Java SpringBoot MongoPlus 使用MyBatisPlus的方式&#xff0c;优雅的操作MongoDB 介绍特性安装新建SpringBoot工程引入依赖配置文件 使用新建实体类创建Service测试类进行测试新增方法查询方法 官方网站获取本项目案例代码 介绍 Mongo-Plus&#xff08;简称 MP&#xff09;是一…...

【易捷海购-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

antd+vue——实现table组件跨页多选,已选择数据禁止第二次重复选择

需求场景&#xff1a;点击【新增】按钮可以在分页弹窗中跨页多选选择数据后添加到页面中&#xff0c;再次点击【新增】&#xff0c;已经选择过的数据则置灰不让重复选择。 选择后&#xff0c;置灰 点击【确定】数据添加到页面中&#xff0c;可再次点击【新增】进行添加数据 …...

Python采集京东标题,店铺,销量,价格,SKU,评论,图片

京东的许多数据是通过 JavaScript 动态加载的&#xff0c;包括销量、价格、评论和评论时间等信息。我们无法仅通过传统的静态网页爬取方法获取到这些数据。需要使用到如 Selenium 或 Pyppeteer 等能够模拟浏览器行为的工具。 另外&#xff0c;京东的评论系统是独立的一个系统&a…...

数据中台指标管理系统

您所描述的是一个数据中台指标管理系统&#xff0c;它基于Spring Cloud技术栈构建。数据中台是企业数据管理和应用的中心平台&#xff0c;它整合了企业内外部的数据资源&#xff0c;提供数据服务和数据管理能力。以下是您提到的各个模块的简要概述&#xff1a; 1. **首页**&am…...

什么是ThreadLocal以及内存泄漏问题、hash冲突问题

ThreadLocal是什么 ThreadLocal类用来提供线程内部的局部变量 它主要有三大特性&#xff1a; 线程安全: 在多线程并发的场景下保证线程安全传递数据&#xff1a;通过ThreadLocal在同一线程传递公共变量线程隔离&#xff1a;每个线程的变量都是独立的&#xff0c;不会互相影响…...

从零开始做题:My_lllp

题目 给出一张png图片 解题 ┌──(holyeyes㉿kali2023)-[~/Misc/题目/zulu/My_lllp] └─$ python2 lsb.py extract my_lllp.png out.txt my_lllp [] Image size: 1080x1079 pixels. [] Written extracted data to out.txt. ┌──(holyeyes㉿kali2023)-[~/Misc/题目/zul…...

如何编译ffmpeg支持h265(hevc)?

推荐使用这里的文件&#xff1a;https://github.com/runner365/ffmpeg_rtmp_h265 根据你ffmpeg的源码 版本&#xff0c;切换到不同分支即可。 国内cdn方式: 新增codecid hevc/vp8/vp9/opus在rtmp中的codecid没有官方协议定义&#xff0c;由国内众多知名cdn共同制定。 FLV_COD…...

UNIAPP_顶部导航栏右侧添加uni-icons图标,并绑定点击事件,自定义导航栏右侧图标

效果 1、导入插件 uni-icons插件&#xff1a;https://ext.dcloud.net.cn/plugin?nameuni-icons 复制 uniicons.ttf 文件到 static/fonts/ 下 仅需要那个uniicons.ttf文件&#xff0c;不引入插件、单独把那个文件下载到本地也是可以的 2、配置页面 "app-plus":…...

Redis原理-数据结构

Redis原理篇 1、原理篇-Redis数据结构 1.1 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存…...

计算机网络 - 万字长文

计算机网络 二、计算机网络2.1 七层模型表格2.2 通俗讲解七层模型2.3 TCP与UDP对比2.4 TCP 三次握手过程==为什么握手是三次,而不是两次或者四次?====三次握手可以携带数据吗?====TCP三次握手失败,服务端会如何处理?====什么是半连接队列?全连接====ISN(Initial Sequence…...

基于java+springboot+vue实现的仓库管理系统(文末源码+lw+ppt)23-499

第1章 绪论 伴随着信息社会的飞速发展&#xff0c;仓库管理所面临的问题也一个接一个的出现&#xff0c;所以现在最该解决的问题就是信息的实时查询和访问需求的问题&#xff0c;以及如何利用快捷便利的方式让访问者在广大信息系统中进行查询、分享、储存和管理。这对我们的现…...

网络安全概述

这里写目录标题 信息安全现状及挑战概念常见的网络安全术语恶意程序的特点 信息安全的脆弱性网络环境的开放性协议栈道的脆弱性&#xff08;缺乏认证和加密 完整性&#xff09; 常见安全攻击传输层 ---TCP SYN Flood攻击分布式拒绝服务攻击(DDOS)社会工程学攻击钓鱼攻击水坑攻击…...

Java传引用问题

本文将介绍 Java 中的引用传递&#xff0c;包括其定义、实现方式、通过引用修改原来指向的内容和通过引用修改当前引用的指向的区别 目录 1、引用传递的概念 2、引用传递的实现方式 3、传引用会发生的两种情况&#xff1a; 通过引用修改当前引用的指向 通过引用修改原来指…...

P8086 『JROI-5』Music

题目背景 请注意到并不正常的时间限制。 本题读入量较大&#xff0c;建议使用较快的读入方式。 小 C 每年都要给丁总氪钱。 题目描述 小 C 喜欢在网易云听歌&#xff0c;她希望你能帮助她计算一下她的网易云的听歌时间。 小 C 有 n 条听歌记录&#xff0c;每条形如 x t&a…...

【Java]认识泛型

包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了一个包装类型。 除了 Integer 和 Character&#xff0c; 其余基本类型的包装类都是首字母大写。 泛型 泛型是在JDK1.5引入的…...

git要忽略对文件的本地修改

要忽略对文件的本地修改&#xff08;即&#xff0c;使Git忽略对该文件的任何未提交更改&#xff09;&#xff0c;可以使用以下命令将该文件标记为假设未更改&#xff08;assume-unchanged&#xff09;&#xff1a; sh git update-index --assume-unchanged runtime/x64/skin/s…...

Linux学习笔记(三)文件权限

一、权限的分类 Linux权限分为r(读取)、w(写入)、x(执行)。我们在终端执行ls -l命令查看文件详细信息显示如下: [root@srv sun]# ls -l 总用量 0 drwxr-xr-x. 2 sun root 6 7月 5 14:05 公共 drwxr-xr-x. 2 sun root 6 7月 5 14:05 模板 drwxr-xr-x. 2 sun root…...

自定义类TMyLabel继承自QLabel ,实现mouseDoubleClickEvent

自定义类TMyLabel &#xff0c;继承自QLabel TMyLabel 中重新实现了 event 方法&#xff0c;重写了mouseDoubleClickEvent 发射信号 在主窗体中放入TMyLabel组件&#xff0c;将TMyLabel mouseDoubleClickEvent 信号&#xff0c; 绑定到实现方法do_doubleClick()槽函数 TMy…...

逻辑回归模型(非回归问题,而是分类问题)

目录&#xff1a; 一、Sigmoid函数&#xff1a;二、逻辑回归介绍&#xff1a;三、决策边界四、逻辑回归模型训练过程&#xff1a;1.训练目标&#xff1a;2.梯度下降调整参数&#xff1a; 一、Sigmoid函数&#xff1a; Sigmoid函数是构建逻辑回归模型的重要函数&#xff0c;如下…...

深度学习驱动的光谱超分辨率:技术演进与应用前景

1. 光谱超分辨率技术的前世今生 我第一次接触光谱超分辨率技术是在2015年&#xff0c;当时还在用传统的线性插值方法处理遥感图像。记得有次为了获取一片农田的高光谱数据&#xff0c;团队不得不动用昂贵的机载传感器&#xff0c;结果因为天气原因导致数据质量极差。正是这次经…...

MiniCPM-V-2_6嵌入式AI应用实战:STM32F103C8T6边缘推理集成

MiniCPM-V-2_6嵌入式AI应用实战&#xff1a;STM32F103C8T6边缘推理集成 最近几年&#xff0c;AI模型越来越“小”&#xff0c;开始往各种硬件设备里钻。你可能听说过在手机、树莓派上跑AI&#xff0c;但有没有想过&#xff0c;在一块只有指甲盖大小、主频72MHz、内存才20KB的S…...

intv_ai_mk11行业落地:教育机构课件辅助生成、HR招聘文案批量产出案例

intv_ai_mk11行业落地&#xff1a;教育机构课件辅助生成、HR招聘文案批量产出案例 1. 模型能力与行业价值 intv_ai_mk11作为一款基于Llama架构的文本生成模型&#xff0c;在教育培训和人力资源领域展现出独特的实用价值。这个开箱即用的解决方案特别适合需要快速处理大量文本…...

白鲸开源架构师获邀成为 ASF Member

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

Java微服务集成TranslateGemma:企业级翻译中台构建

Java微服务集成TranslateGemma&#xff1a;企业级翻译中台构建 1. 为什么需要企业级翻译中台 最近在给一家跨境电商平台做技术咨询时&#xff0c;客户提到一个很实际的问题&#xff1a;他们的客服系统、商品管理系统、营销内容平台各自维护着不同的翻译逻辑。客服用的是第三方…...

uniapp 雪花算法封装类

1. uniapp 雪花算法封装类 雪花算法(SnowFlake)生成64位整数ID,具有全局唯一、趋势递增、高性能等特点,适合分布式系统。 1.1. 解决分布式全局唯一ID的方法 1.1.1. UUID UUID做全局ID的弊端:UUID是由数字加字母的形式组成,无法保持递增,它使得聚簇索引(主键值和行数据…...

零成本打造私有云盘:从PHPStudy安装到IPv6动态域名解析全攻略

零成本打造私有云盘&#xff1a;从PHPStudy安装到IPv6动态域名解析全攻略 在数字化时代&#xff0c;个人数据存储需求呈爆炸式增长。网盘限速、隐私泄露、订阅费用高昂等问题困扰着许多用户。本文将手把手教你如何利用闲置电脑和免费工具&#xff0c;打造一个完全由自己掌控的私…...

Windows内存泄漏排查实战:用VMMap揪出C++程序中的‘内存黑洞’(附Heap快照对比技巧)

Windows内存泄漏排查实战&#xff1a;用VMMap精准定位C程序中的"内存黑洞" 1. 内存泄漏&#xff1a;程序员的隐形噩梦 在C开发领域&#xff0c;内存泄漏堪称最顽固的"慢性病"之一。不同于程序崩溃这类明显故障&#xff0c;内存泄漏往往悄无声息地蚕食系统资…...

MATLAB MultiDIC/Ncorr实战:从图像采集到应力应变云图生成的全流程解析

1. 数字图像相关技术入门指南 第一次接触数字图像相关&#xff08;DIC&#xff09;技术时&#xff0c;我完全被那些专业术语搞晕了。后来在实际项目中摸爬滚打才发现&#xff0c;这套技术本质上就是用相机"看"材料变形的过程。想象一下橡皮筋被拉伸时表面的斑点移动—…...

I2C协议详解:从基础原理到工程实践

1. I2C协议基础与核心设计思想I2C&#xff08;Inter-Integrated Circuit&#xff09;总线是Philips公司&#xff08;现NXP&#xff09;在1980年代开发的一种同步、半双工串行通信协议。作为嵌入式系统中最常用的总线之一&#xff0c;I2C以其简洁的两线制&#xff08;SDA数据线S…...