关于java:Spring-Boot-2x基础教程使用MongoDB

31次阅读

共计 3224 个字符,预计需要花费 9 分钟才能阅读完成。

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

过了年,重申一下这个系列的指标:目前次要工作就是把 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 也提供了弱小的反对,上面就开始入手试试吧。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

第二步:创立用户实体User

@Data
public class User {

    @Id
    private Long id;

    private String username;
    private Integer age;

}

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

public interface UserRepository extends MongoRepository<User, Long> {User findByUsername(String username);

}

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

第四步:编写单元测试

@SpringBootTest(classes = Chapter61Application.class)
public class ApplicationTests {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test() throws Exception {userRepository.deleteAll();

        // 创立三个 User,并验证 User 总数
        userRepository.save(new User(1L, "didi", 30));
        userRepository.save(new User(2L, "mama", 40));
        userRepository.save(new User(3L, "kaka", 50));
        Assertions.assertEquals(3, userRepository.findAll().size());

        // 删除一个 User,再验证 User 总数
        User u = userRepository.findById(1L).get();
        userRepository.delete(u);
        Assertions.assertEquals(2, userRepository.findAll().size());

        // 删除一个 User,再验证 User 总数
        u = userRepository.findByUsername("mama");
        userRepository.delete(u);
        Assertions.assertEquals(1, userRepository.findAll().size());
    }

}

这里留神所应用的 Assertions 是 Spring Boot 2.4 之后整合的版本,之前的版本还是应用Assert

第五步:参数配置

通过下面的例子,咱们能够轻而易举的对 MongoDB 进行拜访,然而实战中,应用服务器与 MongoDB 通常不会部署于同一台设施之上,这样就无奈应用自动化的本地配置来进行应用。这个时候,咱们也能够不便的配置来实现反对,只须要在 application.properties 中退出 mongodb 服务端的相干配置,具体示例如下:

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

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

若应用 mongodb 2.x,也能够通过如下参数配置,该形式不反对 mongodb 3.x。

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/

如果您感觉本文不错,欢送 Star 反对,您的关注是我保持的能源!

欢送关注我的公众号:程序猿 DD,取得独家整顿的收费学习资源助力你的 Java 学习之路!另每周赠书不停哦~

正文完
 0