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

news2024/11/25 16:31:00

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   #ip
      port: 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 {
    @Autowired
    private AstarDemoService astarDemoService;
    @Test
    public 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获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI写作神器大揭秘:五款你不可错过的AI写作工具

在现实生活中&#xff0c;除了专业的文字工作者&#xff0c;各行各业都避免不了需要写一些东西&#xff0c;比如策划案、论文、公文、讲话稿、总结计划……等等。而随着科技的进步&#xff0c;数字化时代的深入发展&#xff0c;AI已经成为日常工作中必不可少的工具了&#xff0…

Cesium 立式雷达扫描

Cesium 立式雷达扫描 自定义 Primitive 实现支持水平和垂直交替扫描

WebKey备受瞩目的Web3.0新叙事,硬件与加密生态完美融合特性成为数字世界的新入口

在当今迅速发展的科技领域&#xff0c;Web3.0正在引领一场颠覆性的变革。而作为这一变革的先锋&#xff0c;WebKey无疑是备受瞩目的创新项目。它不仅代表了一种全新的技术趋势&#xff0c;更是数字世界中硬件与加密生态完美融合的典范。 硬件与加密生态的完美融合 WebKey的核心…

海豚调度监控:新增依赖缺失巡检,上游改动再也不用担心了!

&#x1f4a1; 本系列文章是 DolphinScheduler 由浅入深的教程&#xff0c;涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。 祝开卷有益:) 用过 DolphinScheduler 的小伙伴应该都知道&#xff0c;Dolphin…

Echarts中的折线图,多个Y轴集中在左侧(在Vue中使用多个Y轴的折线图)

简述&#xff1a;在 ECharts 中&#xff0c;创建一个带有多个 Y 轴的折线图&#xff0c;并且将这些 Y 轴都集中显示在图表的左侧&#xff0c;可以通过合理配置 yAxis 和 series 的属性来实现。简单记录 一. 函数代码 drawCarNumEcs() {// 初始化echarts图表,并绑定到id为"…

Vue组件如何“传话”?这里有个小秘诀!

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-组件通信 目录 Vue组件通信 &#xff08;1&#xff09; props / $emit 1. 父组件向子组件传…

【HDC.2024】探索无限可能:华为云区块链+X,创新融合新篇章

6月23日&#xff0c;华为开发者大会2024&#xff08;HDC 2024&#xff09;期间&#xff0c; “「区块链X」多元行业场景下的创新应用”分论坛在东莞松山湖举行&#xff0c;区块链技术再次成为焦点。本次论坛以"区块链X"为主题&#xff0c;集结了行业专家、技术领袖、…

使用Scrapy进行网络爬取时的缓存策略与User-Agent管理

缓存策略的重要性 缓存策略在网络爬虫中扮演着至关重要的角色。合理利用缓存可以显著减少对目标网站的请求次数&#xff0c;降低服务器负担&#xff0c;同时提高数据抓取的效率。Scrapy提供了多种缓存机制&#xff0c;包括HTTP缓存和Scrapy内置的缓存系统。 HTTP缓存 HTTP缓…

【规范】Git分支管理,看看我司是咋整的

前言 &#x1f34a;缘由 Git分支管理好&#xff0c;走到哪里都是宝 &#x1f3c0;事情起因&#xff1a; 最近翻看博客中小伙伴评论时&#xff0c;发现文章【规范】看看人家Git提交描述&#xff0c;那叫一个规矩一条回复&#xff1a; 本狗亲测在我司中使用规范的好处&#xf…

vue实现左右拖动分屏

效果图如下&#xff1a; 封装组件 <template><div ref"container" class"container"><div class"left-content" :style"leftStyle">/**定义左侧插槽**/<slot name"left"></slot></div>…

接口测试工具Postman

Postman Postman介绍 开发API后&#xff0c;用于API测试的工具。在我们平时开发中&#xff0c;特别是需要与接口打交道时&#xff0c;无论是写接口还是用接口&#xff0c;拿到接口后肯定都得提前测试一下。在开发APP接口的过程中&#xff0c;一般接口写完之后&#xff0c;后端…

SPL-404:如何彻底改变Solana上的NFT与DeFi

在不断发展的数字资产领域中&#xff0c;非同质化Token&#xff08;NFT&#xff09;已成为一股革命性力量&#xff0c;彻底改变了我们对数字所有权的看法和互动方式。从艺术和收藏品到游戏和虚拟房地产&#xff0c;NFT吸引了创作者、投资者和爱好者的想象力。 本指南将带您进入…

【C++】解决 C++ 语言报错:Dangling Pointer

文章目录 引言 悬挂指针&#xff08;Dangling Pointer&#xff09;是 C 编程中常见且危险的错误之一。当程序试图访问指向已释放内存的指针时&#xff0c;就会发生悬挂指针错误。这种错误不仅会导致程序崩溃&#xff0c;还可能引发不可预测的行为和安全漏洞。本文将深入探讨悬…

既美观又方便的后台框架谁需要?进来就对了。

一套既美观又方便的后台框架可以大大幅节约开发时间和成本。 我们来一起看看几个明朗大气的管理控制台页面。 本文档会持续更新 模板编号&#xff1a;翠花_001模板编号&#xff1a;翠花_002模板编号&#xff1a;翠花_003

第3章.中央服务器的物联网模式--AI/ML集成

第3章.中央服务器的物联网模式 本章列出了由于存储和/或计算需求而部署在中央服务器上以及部署在边缘&#xff08;本地&#xff09;或云上的体系结构模式。 这些模式基于现场设备生成的数据提供见解&#xff0c;使用附加数据&#xff08;来自附加系统&#xff0c;如企业系统&am…

嵌入式Linux系统编程 — 6.4 信号集

目录​​​​​​​ 1 信号集概念 2 sigemptyset、sigfillset初始化信号集 3 sigaddset、sigdelset向信号集中添加/删除信号 4 sigismember函数测试信号是否在信号集中 1 信号集概念 在Linux系统中&#xff0c;信号集&#xff08;signal set&#xff09;用于表示一组信号…

优思学院|听说你想了解箱型图?教程在这里!

箱形图是什么&#xff1f; 箱形图&#xff08;也称为箱线图&#xff09;使用箱体和线条来表示一个或多个组的数值数据分布。箱体的边界表示数据中间50%的范围&#xff0c;中央线标示中位数值。线从每个箱体延伸出来&#xff0c;捕捉其余数据的范围&#xff0c;在线条之外的点表…

cadence symbol修改之一

cdaence virtuoso 复制cell&#xff0c;或者拷贝symbol之后&#xff0c;再次调用的时候&#xff0c;symbol还是跟随原来的cell名字 解决办法 打开对应的symbol 修改partName为 cellName

打造您的第一个私有智能助手

当前的大语言模型通常是基于公开的知识进行训练的&#xff0c;而我们的组织和个人用户希望能够获得有关自身私有知识的回答。为了满足这一需求&#xff0c;业界通常采用检索增强生成&#xff08;RAG&#xff09;或微调模型的方法。然而&#xff0c;这些技术对非专业人员来说门槛…

混元大模型加持,微信输入法开启AI问答新体验

在人工智能技术飞速发展的今天&#xff0c;微信作为全球最大的社交平台之一&#xff0c;一直在不断地探索和创新&#xff0c;以提供更智能、更便捷的用户体验。 最近&#xff0c;微信官方宣布了一个令人兴奋的消息&#xff1a;微信输入法正式上线了“一键AI问答”功能&#xf…