服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - Spring Boot 2.x基础教程:使用MongoDB

Spring Boot 2.x基础教程:使用MongoDB

2023-05-07 04:13未知服务器之家 MongoDB

[[385180]] 前段时间因为团队调整,大部分时间放在了团队上,这系列的更新又耽误了一下。但既然承诺持久更新,那就不会落下,今天开始继续更新这部分的内容! 过了年,重申一下这个系列的目标:目前主要任务就是把Spring Boot

[[385180]]

 前段时间因为团队调整,大部分时间放在了团队上,这系列的更新又耽误了一下。但既然承诺持久更新,那就不会落下,今天开始继续更新这部分的内容!

过了年,重申一下这个系列的目标:目前主要任务就是把Spring Boot 1.x部分没有升级的内容做完升级。我会将因为版本升级而产生的变化做一些说明,这样不论低版本的读者还是高版本的读者都能找到自己想要的部分。这也是这次做2.x版本升级的重要原因,尽量避免或减少有读者用着高版本参考我这边低版本的实现而出现问题,然后开始问候我家人的情况。

在完成上述所有的更新之后,接下来很重要的更新内容将会集中在关于Spring Boot的一些进阶内容,比如:要做什么扩展的时候,该从哪里着手等。

如果是您是Spring Boot的使用者,那么一定要关注一下!后面的内容会越来越精彩!

下面回归今天的主题,如何在Spring Boot中使用MongoDB!

MongoDB简介

MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。

MongoDB支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型,也因为他的存储格式也使得它所存储的数据在Nodejs程序应用中使用非常流畅。

既然称为NoSQL数据库,Mongo的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

但是,MongoDB也不是万能的,同MySQL等关系型数据库相比,它们在针对不同的数据类型和事务要求上都存在自己独特的优势。在数据存储的选择中,坚持多样化原则,选择更好更经济的方式,而不是自上而下的统一化。

较常见的,我们可以直接用MongoDB来存储键值对类型的数据,如:验证码、Session等;由于MongoDB的横向扩展能力,也可以用来存储数据规模会在未来变的非常巨大的数据,如:日志、评论等;由于MongoDB存储数据的弱类型,也可以用来存储一些多变json数据,如:与外系统交互时经常变化的JSON报文。而对于一些对数据有复杂的高事务性要求的操作,如:账户交易等就不适合使用MongoDB来存储。

MongoDB官网:https://www.mongodb.org/

动手试试

第一步:引入依赖

Spring Boot中可以通过在pom.xml中加入spring-boot-starter-data-mongodb引入对mongodb的访问支持依赖。它的实现依赖spring-data-mongodb。是的,您没有看错,又是spring-data的子项目,之前介绍过spring-data-jpa、spring-data-redis,对于mongodb的访问,spring-data也提供了强大的支持,下面就开始动手试试吧。

  1. <dependency> 
  2.     <groupId>org.springframework.boot</groupId> 
  3.     <artifactId>spring-boot-starter-data-mongodb</artifactId> 
  4. </dependency> 

第二步:创建用户实体User

  1. @Data 
  2. public class User { 
  3.  
  4.     @Id 
  5.     private Long id; 
  6.  
  7.     private String username; 
  8.     private Integer age; 
  9.  

第三步:实现用户实体User的数据访问对象UserRepository

  1. public interface UserRepository extends MongoRepository<User, Long> { 
  2.  
  3.     User findByUsername(String username); 
  4.  

在Spring Data的抽象下,是不是同其他Spring Data子项目一样的简洁、好用、易学!

第四步:编写单元测试

  1. @SpringBootTest(classes = Chapter61Application.class) 
  2. public class ApplicationTests { 
  3.  
  4.     @Autowired 
  5.     private UserRepository userRepository; 
  6.  
  7.     @Test 
  8.     public void test() throws Exception { 
  9.         userRepository.deleteAll(); 
  10.  
  11.         // 创建三个User,并验证User总数 
  12.         userRepository.save(new User(1L, "didi", 30)); 
  13.         userRepository.save(new User(2L, "mama", 40)); 
  14.         userRepository.save(new User(3L, "kaka", 50)); 
  15.         Assertions.assertEquals(3, userRepository.findAll().size()); 
  16.  
  17.         // 删除一个User,再验证User总数 
  18.         User u = userRepository.findById(1L).get(); 
  19.         userRepository.delete(u); 
  20.         Assertions.assertEquals(2, userRepository.findAll().size()); 
  21.  
  22.         // 删除一个User,再验证User总数 
  23.         u = userRepository.findByUsername("mama"); 
  24.         userRepository.delete(u); 
  25.         Assertions.assertEquals(1, userRepository.findAll().size()); 
  26.     } 
  27.  

这里注意所使用的Assertions是Spring Boot 2.4之后整合的版本,之前的版本还是使用Assert

第五步:参数配置

通过上面的例子,我们可以轻而易举的对MongoDB进行访问,但是实战中,应用服务器与MongoDB通常不会部署于同一台设备之上,这样就无法使用自动化的本地配置来进行使用。这个时候,我们也可以方便的配置来完成支持,只需要在application.properties中加入mongodb服务端的相关配置,具体示例如下:

  1. spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test 

在尝试此配置时,记得在mongo中对test库创建具备读写权限的用户(用户名为name,密码为pass),不同版本的用户创建语句不同,注意查看文档做好准备工作

若使用mongodb 2.x,也可以通过如下参数配置,该方式不支持mongodb 3.x。

  1. spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 

MongoDB虽然在过去很长一段时间,受到不少的关注,但由于其在各方面都表现中庸,这两年间似乎越来越少听到或者看到关于MongoDB的大规模应用场景。

就笔者所接触的很多以往的使用场景也都开始在使用ES来取代,以获得更好的性能表现。所以,接下来我们会讲讲Spring Boot中如何使用ES,关注我,持续获得更多Spring Boot的技术干货!

代码示例

本文的相关例子可以查看下面仓库中的chapter6-1目录:

Github:https://github.com/dyc87112/SpringBoot-Learning/

Gitee:https://gitee.com/didispace/SpringBoot-Learning/

原文链接:http://www.zzvips.com/uploads/allimg/o3xtpy13t44

 

延伸 · 阅读

精彩推荐
  • MongoDBMongoDB的索引

    MongoDB的索引

    数据库中的索引就是用来提高查询操作的性能,但是会影响插入、更新和删除的效率,因为数据库不仅要执行这些操作,还要负责索引的更新 ...

    MongoDB教程网2532020-05-12
  • MongoDBMongoDB多条件模糊查询示例代码

    MongoDB多条件模糊查询示例代码

    这篇文章主要给大家介绍了关于MongoDB多条件模糊查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值...

    浅夏晴空5902020-05-25
  • MongoDB在mac系统下安装与配置mongoDB数据库

    在mac系统下安装与配置mongoDB数据库

    这篇文章主要介绍了在mac系统下安装与配置mongoDB数据库的操作步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    CXYhh1219312021-11-14
  • MongoDBMongoDB系列教程(五):mongo语法和mysql语法对比学习

    MongoDB系列教程(五):mongo语法和mysql语法对比学习

    这篇文章主要介绍了MongoDB系列教程(五):mongo语法和mysql语法对比学习,本文对熟悉Mysql数据库的同学来说帮助很大,用对比的方式可以快速学习到MongoDB的命...

    MongoDB教程网3252020-05-01
  • MongoDBmongodb数据库基础知识之连表查询

    mongodb数据库基础知识之连表查询

    这篇文章主要给大家介绍了关于mongodb数据库基础知识之连表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mongodb具有一定的参...

    ZJW02155642020-05-22
  • MongoDBWindows下MongoDB配置用户权限实例

    Windows下MongoDB配置用户权限实例

    这篇文章主要介绍了Windows下MongoDB配置用户权限实例,本文实现需要输入用户名、密码才可以访问MongoDB数据库,需要的朋友可以参考下 ...

    MongoDB教程网3082020-04-29
  • MongoDBMongodb索引的优化

    Mongodb索引的优化

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。接下来通过本文给大家介绍Mongodb索引的优化,本文介绍的非常详细,具有参考借鉴价值,感...

    MRR3252020-05-05
  • MongoDBMongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    这篇文章主要给大家介绍了关于MongoDB查询之高级操作(多条件查询、正则匹配查询等)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者...

    w田翔3872020-12-19