SpringBoot整合Mongodb4.0
本品文章只做学习使用;
安装mongodb推荐博客:https://www.jianshu.com/p/a75e26e5f635
1:如何在外网环境下开放mongodb
服务器版本:centos7.6
(1) 保证mongodb的启动配置文件中使用了bind_ip=0.0.0.0
(2) 保证服务器开放了27017端口
(3) 保证云服务器的安全组中开放了27017
可参考我之前的博客:https://www.cnblogs.com/zgq7/p/11564860.html
自述:昨天我在学习的时候使用mongodb桌面工具robo 3T连接我的外网mongodb时可以稳定快速的连接,
但是在我的SpringBoot项目中却一直连接超时,经过重复的实验及思考后分析出了问题所在:
1:我的robo 3T 采用的是SSH连接,让我一直以为mongodb处于外网开放状态
2:我的云服务器没有开放27017端口
3:我的安全组也没有开放27017端口
彻底开放之后可以在服务器上做一下测试:
如出现上图则表示mongodb外网彻底放通了。
2:如何在SpringBoot中整合
我的版本:SpringBoot2.1.7+Java8+Mongodb 4.0
(1): springboot中的依赖
1 <dependencies>
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter</artifactId>
5 </dependency>
6
7 <dependency>
8 <groupId>org.springframework.boot</groupId>
9 <artifactId>spring-boot-starter-web</artifactId>
10 </dependency>
11
12 <dependency>
13 <groupId>org.springframework.boot</groupId>
14 <artifactId>spring-boot-starter-data-mongodb</artifactId>
15 </dependency>
16
17 <dependency>
18 <groupId>org.springframework.boot</groupId>
19 <artifactId>spring-boot-starter-test</artifactId>
20 <scope>test</scope>
21 </dependency>
22
23 </dependencies>
(2): model
package com.boot.mongodb.model; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "test")
public class UserModel { @Id
private Object id; private String name; private Integer age; private String from; public UserModel() {
} public UserModel(String name, Integer age) {
this.name = name;
this.age = age;
} public UserModel(Object id, String name, String from) {
this.id = id;
this.name = name;
this.from = from;
} public UserModel(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
} public UserModel(Object id, String name, Integer age, String from) {
this.id = id;
this.name = name;
this.age = age;
this.from = from;
} public Object getId() {
return id;
} public void setId(Object id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public String toString() {
return "UserModel{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", from='" + from + '\'' +
'}';
}
}
1:@Document(collection = "test") 代表该实体映射到该库的test集合
2:@ID 指该字段映射到test集合的ID
(3): 作为持久化有两种方式:
1:使用Repostory的方式
package com.boot.mongodb.repository; import com.boot.mongodb.model.UserModel;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository; @Repository
public interface UserRepository extends MongoRepository<UserModel, Integer> {
}
增删改查:
//==============================基于Repository的增删改查
@Test
public void add() {
UserModel userModel = new UserModel(1, "lzq", 23, "Repository");
System.out.println(userRepository.insert(userModel));
} @Test
public void remove() {
UserModel userModel = new UserModel(1, "lzq", 23, "Repository");
userRepository.delete(userModel);
} @Test
public void update() {
UserModel userModel = new UserModel(2, "lzq", 24, "Repository");
//有则修改,无则新增
System.out.println(userRepository.save(userModel));
} @Test
public void find() {
System.out.println(userRepository.findAll());
UserModel userModel = new UserModel(2, "lzq", 24, "Repository");
Example example = Example.of(userModel);
System.out.println(userRepository.findOne(example));
System.out.println(userRepository.findAll(example));
}
2:使用MongoTemplate的方式,不用创建对应的Repostroy
增删改查
//===============================基于MongoTemplate的增删改查
@Test
public void tadd() {
UserModel userModel = new UserModel(3, "lzq", 24, "MongoTemplate");
logger.info("{}", mongoTemplate.insert(userModel));
} @Test
public void tdelete() {
//UserModel userModel = new UserModel(3, "lzq", 24, "MongoTemplate");
//输出删除的行数
//System.out.println(mongoTemplate.remove(userModel).getDeletedCount());
Query query = new Query(Criteria.where("id").is(3));
logger.info("{}", mongoTemplate.remove(query, UserModel.class).getDeletedCount());
} @Test
public void tupdate() {
Query query = new Query(Criteria.where("id").is(3));
Update update = new Update().set("name", "2333333");
logger.info("{}", mongoTemplate.updateFirst(query, update, UserModel.class));
} @Test
public void tfind() {
Query query = new Query(Criteria.where("id").is(3));
logger.info("{}", mongoTemplate.find(query, UserModel.class));
}
3:完整项目github地址:https://github.com/zgq7/boot_collections/tree/master/boot_mongodb
欢迎私聊互相学习。
SpringBoot整合Mongodb4.0的更多相关文章
- SpringBoot整合Graylog3.0
Graylog简介 Graylog是一个开源的完整的日志管理工具,功能和ELK类似,安装部署更方便. 官方网站 https://www.graylog.org 搭建 使用docker快速搭建 参考 h ...
- springboot 整合 mybatis 入门
springboot整合mybatis 0.yml 配置文件 1.创建数据库表. 2.创建实体类. 3.创建 Mapper 接口 ,添加 @Mapper 注解. 4.创建 Mapper 映射文件. & ...
- solr8.0 springboot整合solr(四)
引言: solr搭建起后,就该应用到java后台开发里了,接下来就用springboot整合应用solr 一:引入jar包 <!--solr--> <dependency> & ...
- SpringBoot整合MyBatis与MySql8.0
一.前言 之前已经有一篇文章讨论过SpringBoot整合MyBatis,因而此篇不在重复累赘,本文主要是最新版的SpringBoot2.0与MyBatis.最新MySQL8.0整合过程中遇到的问题进 ...
- Springboot(2.0.0.RELEASE)+spark(2.1.0)框架整合到jar包成功发布(原创)!!!
一.前言 首先说明一下,这个框架的整合可能对大神来说十分容易,但是对我来说十分不易,踩了不少坑.虽然整合的时间不长,但是值得来纪念下!!!我个人开发工具比较喜欢IDEA,创建的springboot的j ...
- Activiti工作流学习之SpringBoot整合Activiti5.22.0实现在线设计器(二)
一.概述 网上有很多关于Eclipse.IDEA等IDE插件通过拖拽的方式来画工作流程图,个人觉得还是不够好,所以花点时间研究了一下Activiti在线设计器,并与SpringBoot整合. 二.实现 ...
- SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)
SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂) 一,整合Swagger3.0 随着Spring Boot.Spring Cloud等微服务的 ...
- Springboot:SpringBoot2.0整合WebSocket,实现后端数据实时推送!
一.什么是WebSocket? B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为服务器不 ...
- spring-boot整合mybatis(1)
sprig-boot是一个微服务架构,加快了spring工程快速开发,以及简便了配置.接下来开始spring-boot与mybatis的整合. 1.创建一个maven工程命名为spring-boot- ...
随机推荐
- POE供电
1.定位:POE (Power Over Ethernet)指的是在现有的以太网Cat.5布线基础架构不作任何改动的情况下,在为一些基于IP的终端(如IP电话机.无线局域网接入点AP.网络摄像机等)传 ...
- CPU的后记,程序员的未来之计
渔家傲 塞下秋来风景异,衡阳雁去无留意.四面边声连角起,千嶂里,长烟落日孤城闭. 浊酒一杯家万里,燕然未勒归无计.羌管悠悠霜满地.人不寐,将军白发征夫泪. 作者:良知犹存 转载授权以及围观:欢迎添 ...
- 负载均衡之LVS与Nginx对比
今天总结一下负载均衡中LVS与Nginx的区别,好几篇博文一开始就说LVS是单向的,Nginx是双向的,我个人认为这是不准确的,LVS三种模式中,虽然DR模式以及TUN模式只有请求的报文经过Direc ...
- 【Azure Redis 缓存】如何得知Azure Redis服务有更新行为?
问题描述 Azure Redis作为微软云提供的一种PaaS服务,由于PaaS的特性,服务端的安装和维护.修补.升级等操作均由平台放负责.虽然最终用户只需要关注当前服务的使用,但是后台的升级和补丁行为 ...
- Codeforces Round #587 (Div. 3) F Wi-Fi(线段树+dp)
题意:给定一个字符串s 现在让你用最小的花费 覆盖所有区间 思路:dp[i]表示前i个全覆盖以后的花费 如果是0 我们只能直接加上当前位置的权值 否则 我们可以区间询问一下最小值 然后更新 #incl ...
- 【noi 2.6_747】Divisibility(DP)
这题题意与前面的"判断整除"重复了.具体解释可看我这篇的博文. http://www.cnblogs.com/konjak/p/5936738.html 1 #include< ...
- 抓取QQ音乐歌单
抓取QQ音乐歌单1.通过分析歌曲下载路径来分析所需参数: 通过比较, 得出其中歌曲下载url与参数vkey是可变的,歌曲下载url中可变得值是请求歌单返回的歌曲数据的strMediaMid参数, 而v ...
- 牛客编程巅峰赛S1第5场 - 黄金&钻石&王者 B.牛牛的字符串 (DP)
题意:有一个字符串\(s\),我们可以选择\(s_{i}\),如果\(s_{i+k}>s_{i}\),那么就可以交换\(s_{i}\)和\(s_{i+k}\),问最多能够交换多少次. 题解:因为 ...
- CS224--1:语言模型和词向量
参考: https://www.cnblogs.com/pinard/p/7243513.html https://blog.csdn.net/cindy_1102/article/details/8 ...
- Kubernets二进制安装(19)之集群平滑升级
在实际生产环境中,部署好的集群稳定就行了,但是,如果需要使用到新的功能或当前版本出现了严重的漏洞,都建议做升级,本教程是将node节点从v1.15.10版本平滑升级到v1.15.12版本,如果升级到相 ...