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

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

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

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

一、 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 创建持久化文件夹

bash 复制代码
mkdir -p /usr/local/mongodb/data

2.3 启动MongoDB容器

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

2.4 配置账号密码

进入容器

bash 复制代码
docker exec -it mongo bash

进入MongoDB控制台

复制代码
mongo admin

创建用户

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

连接MongoDB

arduino 复制代码
db.auth('root', 'root')

2.5 开放防火墙端口

css 复制代码
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依赖

xml 复制代码
<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配置文件

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

3.4 Controller代码

java 复制代码
@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代码

java 复制代码
public interface MiniUserService extends IService<MiniUser> {
        
}
java 复制代码
@Service
public class MongoServiceImpl extends ServiceImpl<MiniUser> implements MiniUserService {
    
}

3.6 测试结果

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

四、结尾

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

相关推荐
摇滚侠15 分钟前
Spring Boot 3零基础教程,整合Redis,笔记12
spring boot·redis·笔记
荣淘淘15 分钟前
互联网大厂Java求职面试全景实战解析(涵盖Spring Boot、微服务及云原生技术)
java·spring boot·redis·jwt·cloud native·microservices·interview
爱宇阳22 分钟前
GitLab Docker Compose 迁移教程
docker·容器·gitlab
吃饭最爱25 分钟前
spring高级知识概览
spring boot
舒克日记1 小时前
基于springboot针对老年人的景区订票系统
java·spring boot·后端
沐雨橙风ιε1 小时前
Spring Boot整合Apache Shiro权限认证框架(实战篇)
java·spring boot·后端·apache shiro
一线大码2 小时前
开发 Java 项目时的命名规范
java·spring boot·后端
本就一无所有 何惧重新开始2 小时前
Redis技术应用
java·数据库·spring boot·redis·后端·缓存
低音钢琴3 小时前
【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
java·spring boot·后端