当前位置: 首页 > 科技观察

SpringBoot2.x基础教程:使用MongoDB

时间:2023-03-18 22:27:16 科技观察

前段时间由于团队调整,大部分时间都花在了团队上,这一系列的更新又被推迟了。但既然我们承诺长期更新,我们就不会落后。今天我们会继续更新这部分内容!新年过后,重申一下本系列的目标:目前的主要任务是升级SpringBoot1.x中没有升级的内容。我会解释版本升级带来的变化,让低版本和高版本的读者都能找到自己想要的。这也是此次进行2.x版本升级的重要原因。尽量避免或减少一些读者使用高版本参考这里低版本实现而出现问题的情况,然后开始问候我家。完成以上所有更新后,接下来的重要更新会重点介绍一些关于SpringBoot的进阶内容,比如:什么时候展开,从哪里开始等等,如果你是SpringBoot的用户,一定要注意了!接下来的内容会越来越精彩!回到今天的主题,如何在SpringBoot中使用MongoDB!MongoDB简介MongoDB是一个基于分布式文件存储的数据库,它是介于关系型数据库和非关系型数据库之间的产物,其主要目标是存储key/value(提供高性能和高扩展性)和传统的RDBMS系统(功能丰富))它在它们之间架起了一座桥梁,它结合了两者的优点。MongoDB支持的数据结构非常松散。它是一种类似于json的bson格式,所以它可以存储更复杂的数据类型,而且由于它的存储格式,它存储的数据在Nodejs程序应用中可以非常流畅的使用。既然叫NoSQL数据库,Mongo的查询语言就非常强大。它的语法有点类似于面向对象的查询语言。它几乎可以实现类似于关系数据库的单表查询的大部分功能,并且还支持对数据建立索引。然而,MongoDB并不是万能的。与MySQL等关系型数据库相比,它们在解决不同的数据类型和事务需求方面都有着自己独特的优势。在数据存储的选择上,坚持多元化的原则,选择更好更经济的方式,而不是自上而下的统一。更常见的,我们可以直接使用MongoDB来存储键值对数据,比如:验证码、Session等;由于MongoDB的水平扩展能力,它也可以用来存储未来会变得非常庞大的数据。如:日志、评论等;由于MongoDB存储的是弱类型的数据,它也可以用来存储一些可变的json数据,比如:与外部系统交互时经常变化的JSON消息。对于一些对数据有复杂、事务性要求高的操作,比如账户交易,不适合使用MongoDB来存储。MongoDB官网:https://www.mongodb.org/自己试试第一步:引入依赖在SpringBoot中,可以通过在pom.xml中添加spring-boot-starter-data-mongodb来引入对mongodb的访问支持依赖。它的实现依赖于spring-data-mongodb。是的,你没有看错。它也是spring-data的一个子项目。之前介绍过spring-data-jpa和spring-data-redis。对于mongodb的访问,spring-data也提供了强大的支持。让我们开始试一试。org.springframework.bootspring-boot-starter-data-mongodb第二步:创建用户实体User@DatapublicclassUser{@IdprivateLongid;privateStringusername;privateIntegerage;}第三步:在SpringData的抽象下实现数据访问对象UserRepositorypublicinterfaceUserRepositoryextendsMongoRepository{UserfindByUsername(Stringusername);},是不是和其他SpringData子项目一样简单易用?,简单易学!第四步:编写单元测试@SpringBootTest(classes=Chapter61Application.class)publicclassApplicationTests{@AutowiredprivateUserRepositoryuserRepository;@Testpublicvoidtest()throwsException{userRepository.deleteAll();//创建三个User并验证User总数userRepository.save(newUser(1L,"滴滴",30));userRepository.save(newUser(2L,"mama",40));userRepository.save(newUser(3L,"kaka",50));Assertions.assertEquals(3,userRepository.findAll().size());//删除一个User,然后验证Users总数Useru=userRepository.findById(1L).get();userRepository.delete(u);Assertions.assertEquals(2,userRepository.findAll().size());//删除一个User,然后验证Users总数u=userRepository.findByUsername("mama");userRepository.delete(你);Assertions.assertEquals(1,userRepository.findAll().size());}}这里注意使用的Assertions是SpringBoot2.4之后的集成版本,之前的版本仍然使用AssertStep5:通过上面的例子进行参数配置,我们可以很方便的访问MongoDB,但是在实战中,应用服务器和MongoDB通常不会部署在同一台设备上,这样自动本地配置就无法使用。这时候我们也可以方便的配置完成支持,只需要在application.properties中添加mongodb服务器的相关配置即可。具体例子如下:spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test在尝试这个配置的时候,记得使用在mongo中创建一个对test库有读写权限的用户(用户名为name,密码为pass)。不同版本的用户创建语句不同。注意查看文档并做好准备。如果使用mongodb2.x,还可以通过以下参数配置,该方法不支持mongodb3.x。spring.data.mongodb.host=localhostspring.data.mongodb.port=27017MongoDB虽然在过去很长一段时间内受到了很多关注,但由于各方面表现平平,似乎一直以来都比较少见近两年很少听到或看到有关MongoDB的大规模应用场景。笔者之前接触过的很多使用场景也开始被ES取代以获得更好的性能。那么,接下来我们就来说说如何在SpringBoot中使用ES,关注我,持续获取更多SpringBoot技术干货!代码示例本文中的相关示例可以查看下面仓库中的chapter6-1目录:Github:https://github.com/dyc87112/SpringBoot-Learning/Gitee:https://gitee.com/didispace/SpringBoot-学习/原文链接:https://mp.weixin.qq.com/s/VMDosSmzxW86yFqg_Nmujg