Docker部署MongoDB+整合Mongo版MyBatis—Plus

👩🏽‍💻个人主页:阿木木AEcru

🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》

💹每一次技术突破,都是对自我能力的挑战和超越。

目录

    • 一、 MongoDB简介
      • 1.1 适用场景
      • 1.2 应用案例
    • 二、 Docker部署MongoDB
      • 2.1 拉取MongoDB镜像
      • 2.2 创建持久化文件夹
      • 2.3 启动MongoDB容器
      • 2.4 配置账号密码
      • 2.5 开放防火墙端口
      • 2.6 工具连接测试
    • 三、SpringBoot整合MongoPlus
      • 3.1 MongoPlus是什么
      • 3.2 引入maven依赖
      • 3.3 yml配置文件
      • 3.4 Controller代码
      • 3.5 service代码
      • 3.6 测试结果
    • 四、结尾

在这里插入图片描述

一、 MongoDB简介

MongoDB是一个开源的NoSQL文档型数据库,它使用灵活的文档模型来存储数据,这些文档可以是嵌套的,类似于JSON对象。MongoDB以其高性能、高可用性和易扩展性而闻名,适用于各种规模的应用,从小型项目到大型企业级应用。

1.1 适用场景

网站数据:MongoDB 非常适合处理网站的实时数据,包括用户会话、页面点击流、用户活动日志等。它支持高并发的读写操作,适合处理大量用户请求和实时数据更新。

缓存:由于其高性能的特性,MongoDB 可以作为应用程序的缓存层,减轻后端数据库的压力。它可以存储大量的缓存数据,提高数据访问速度,优化系统性能。

大数据和分析:MongoDB 可以存储和处理大规模的数据集,适合进行复杂的数据分析和处理。它的聚合框架提供了强大的数据处理能力,可以执行复杂的数据聚合操作。

内容管理系统(CMS):MongoDB 的文档型结构非常适合存储和查询内容相关的数据,如文章、图片、视频等。它的灵活的数据模型和强大的查询语言使得内容管理变得更加高效。

物联网(IoT):MongoDB 可以处理来自传感器和设备的大量时序数据。它支持地理空间索引,适合处理地理位置相关的数据。

移动应用:MongoDB 可以作为移动应用的后端数据库,存储用户数据、应用配置和实时数据。它的可扩展性和高可用性确保了移动应用的稳定运行。

1.2 应用案例

京东:中国著名的电商平台,使用 MongoDB 存储商品信息,支持比价和关注功能。

赶集网:中国著名的分类信息网站,使用 MongoDB 记录页面浏览量(PV)计数。

奇虎360: 著名的病毒软件防护和移动应用平台,使用 MongoDB 支撑的 HULK 平台每天接受 200 亿次的查询。

百度云:使用 MongoDB 管理百度云盘中 500 亿条关于文件源信息的记录。

CERN:著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用 MongoDB 存储。

纽约时报:领先的在线新闻门户网站之一,使用 MongoDB 存储和处理新闻内容和用户数据。

二、 Docker部署MongoDB

2.1 拉取MongoDB镜像

 docker pull mongo

2.2 创建持久化文件夹

mkdir -p /usr/local/mongodb/data

2.3 启动MongoDB容器

docker run  --restart=always -itd --name mongo -v /usr/local/mongodb/data:/data/db -p 27017:27017 mongo:latest --auth

2.4 配置账号密码

进入容器

docker exec -it mongo bash

进入MongoDB控制台

mongo admin

创建用户

db.createUser({user:'root',pwd:'root',roles:[{role:"root", db:"admin"},'readWrite']});

连接MongoDB

db.auth('root', 'root')

2.5 开放防火墙端口

sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --reload
注:如果是使用的云服务器,安全组也需要开放此端口。

2.6 工具连接测试

三、SpringBoot整合MongoPlus

3.1 MongoPlus是什么

Mongo-Plus是一个 MongoDB 的操作工具,可和现有mongoDB框架结合使用,为简化开发、提高效率而生。可以理解成Mongo版的MybatisPlus,用法是差不多的。

特性如下:

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

3.2 引入maven依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId>
<!--			<scope>test</scope>--></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mongoPlus--><dependency><groupId>com.gitee.anwena</groupId><artifactId>mongo-plus-boot-starter</artifactId><version>2.0.8.3</version></dependency>
</dependencies>

3.3 yml配置文件

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

3.4 Controller代码


@RestController
@RequestMapping("/mini/user")
@RequiredArgsConstructor
public class MiniUserController {private final MiniUserService miniUserService;//获取用户列表@GetMapping("/list")public R getUserList(){List<MiniUser> list = miniUserService.list();return R.ok(list);}//新增用户@PostMapping("/add")public R addUser() {//由于是测试我就随机生成用户信息了MiniUser user = new MiniUser();user.setName(RandomUtil.randomString(16));user.setAge(RandomUtil.randomLong(18,100));user.setEmail(RandomUtil.randomNumbers(10)+"@qq.com");boolean save = miniUserService.save(user);return R.ok(save);}//新增用户@DeleteMapping("/{id}")public R deleteUser(@PathVariable("id") String id) {boolean delete = miniUserService.removeById(id);return R.ok(delete);}}

3.5 service代码

public interface MiniUserService extends IService<MiniUser> {}
@Service
public class MongoServiceImpl extends ServiceImpl<MiniUser> implements MiniUserService {}

3.6 测试结果

这样一个简单的案例也就完成啦!

四、结尾

感谢您的观看! 如果本文对您有帮助,麻烦用您发财的小手点个三连吧!您的支持就是作者前进的最大动力!再次感谢!

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

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

相关文章

【跟着CHATGPT学习硬件外设 | 05】I2C

本文根据博主设计的Prompt由CHATGPT生成&#xff0c;形成极简外设概念。 &#x1f680; 1. 概念揭秘 I2C&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;也被称为IIC或双线接口&#xff0c;是一种用于微控制器&#xff08;Microcontrollers&#xff09;和外设…

Rust控制台输出跑马灯效果,实现刷新不换行,实现loading效果

要在 Rust 中实现控制台刷新而不换行&#xff0c;以实现类似 "loading" 状态的效果&#xff0c;你可以使用 \r&#xff08;回车符&#xff09;来覆盖上一行的内容。 use std::io::{self, Write}; use std::thread; use std::time::Duration;fn main() {let loading_…

零拷贝技术探讨

零拷贝技术是一种用于提高数据传输效率的网络技术&#xff0c;主要应用于网络服务器中。它通过减少数据在操作系统内核空间和用户空间之间的复制次数来提高性能。 在传统的网络服务器中&#xff0c;当客户端向服务器发送请求时&#xff0c;服务器会从磁盘读取数据&#xff0c;…

tab切换组件,可横向自适应滑动

示例图&#xff1a; 注&#xff1a;需要引入Jquery <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.tabs-box {width: 100%;height: auto;}.tab-header-box {display: flex;overflow: hidden…

Prometheus +Grafana +node_exporter可视化监控Linux + windows虚机

1、介绍 背景&#xff1a;需要对多台虚机进行负载可视乎监控&#xff0c;并进行及时的报警 2、架构图 node_exporter &#xff1a;主要是负责采集服务器的信息。 Prometheus &#xff1a;主要是负责存储、抓取、聚合、查询方面。 Grafana &#xff1a; 主要是…

亚信安慧AntDB引领优质解决方案

亚信安慧AntDB数据库在运营商自主可控替换项目中的成功应用&#xff0c;具有极其重要的意义。该数据库的落地&#xff0c;不仅为这一项目注入了强大的支持力量&#xff0c;还在更大程度上提升了整体的运营效能。作为一种高效可靠的数据库解决方案&#xff0c;AntDB引入了先进的…

2.9 Python缩进规则(包含快捷键)

Python缩进规则&#xff08;包含快捷键&#xff09; 和其它程序设计语言&#xff08;如 Java、C 语言&#xff09;采用大括号“{}”分隔代码块不同&#xff0c;Python采用代码缩进和冒号&#xff08; : &#xff09;来区分代码块之间的层次。 在 Python 中&#xff0c;对于类…

ps 常用命令

ps 常用命令 什么是ps&#xff1f; ps是process status的缩写&#xff0c;用于查看当前系统中运行的进程信息。它提供了关于进程的各种详细信息&#xff0c;如进程 PID、进程状态、CPU 使用情况、内存占用、运行时间等。 常用选项参数 -A &#xff1a;所有的进程均显示出来…

接口自动化框架搭建(三):pytest库安装

1&#xff0c;使用命令行安装 前提条件&#xff1a;已安装python环境 pip install pytest 或者 pip3 install pytest2&#xff0c;从编译器pycharme中安装

如何选择指纹浏览器?盘点好用是防关联浏览器

在网络世界中&#xff0c;保护您的在线隐私和安全非常重要。反检测浏览器是专门为此诞生的工具&#xff0c;旨在通过更改浏览器指纹来帮助您做到这一点&#xff0c;它们使网站、广告商和其他人很难跟踪您的在线行为。 一、什么是反检测浏览器&#xff1f; 您是否想过网站如何检…

『大模型笔记』提示工程、微调和RAG之间对比

提示工程、微调和RAG之间对比 文章目录 一. 提示工程、微调和RAG之间对比二. 参考文章文章:Prompt Engineering vs Finetuning vs RAG一. 提示工程、微调和RAG之间对比 Prompt EngineeringFinetuning

基于FPGA实现的自适应三速以太网

一、三速以太网 千兆以太网PHY芯片是适配百兆和十兆的&#xff0c;十兆就不管了&#xff0c;我们的设计只适应千兆和百兆。 根据上图&#xff0c;我们是可以获取当前主机网口的速率信息的。 always(posedge w_rxc_bufr) beginif(w_rec_valid d0) beginro_speed < w_rec_…

京东商品详情采集API商品价格商品详情抓取API接口(可测试)

京东的商品详情采集API涉及到京东的开放平台服务。如果你想要获取京东商品的价格、详情等信息&#xff0c;通常需要使用京东提供的官方API接口。这些接口需要注册开发者账号&#xff0c;并申请相应的API密钥才能使用。 请求示例&#xff0c;API接口接入Anzexi58 不过&#xff…

iOS开发进阶(十一):ViewController 控制器详解

文章目录 一、前言二、UIViewController三、UINavigationController四、UITabBarController五、UIPageViewController六、拓展阅读 一、前言 iOS 界面开发最重要的首属ViewController和View&#xff0c;ViewController是View的控制器&#xff0c;也就是一般的页面&#xff0c;…

HCIP【GRE VPN配置】

实验要求&#xff1a; 按照图式配置IP地址在R1和R3上配置默认路由使公网区域互通在R1和R3上配置GRE VPN&#xff0c;使两端私网能够互相访问&#xff0c;Tunnel口的IP地址如图所示在R1和R3上配置RIPv2、OSPF或者静态路由传递两端私网路由 实验图式如下&#xff1a; 实验配置思…

苹果iOS系统ipa签名圈内和圈外的区别是什么

哈喽&#xff0c;大家好&#xff0c;咕噜淼淼又来和见面啦&#xff0c;最近有好多小伙伴都在疑惑苹果iOS系统ipa签名为什么还有圈内圈外之分&#xff0c;在签名市场中&#xff0c;与客户在寻谈价格的时候&#xff0c;总是会问到圈内和圈外价格多少&#xff0c;为什么圈外价格要…

如何使用固定公网地址远程连接Python编译器并将运行结果返回到Pycharm

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅱ)

1.数据查询 SELECT [ ALL | DISTINCT] <目标列表达式>[&#xff0c;<目标列表达式>] … FROM <表名或视图名>[&#xff0c; <表名或视图名> ] … [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY…

Python-VBA编程500例-024(入门级)

字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有&#xff1a; 1、文本编辑及处理&#xff1a;在编写或编辑文本文件时&#xff0c;如使用文本编辑器或文本处理器&#xff0c;经常需要处理字符串并确定其在文件中的行数。这…

Aurora IP的Framing帧接口和Streaming流接口

本文介绍Aurora IP配置时要选择的接口类型以及两种接口类型之前的区别。 Aurora IP接口有两种模式&#xff1a;Framing帧接口&#xff0c;Streaming流接口 目前一直在用的都是Framing帧接口。 Framing帧接口和Streaming流接口的主要区别是什么呢&#xff1f; 顾名思义&#x…