基于SpringBoot2使用Rest访问MongoDB数据

在之前项目中我们想要读取 内的内容需要使用 来完成数据的 ,那如果我们想要通过 的形式获取 内的数据就更麻烦了,还需要自行去创建对应的控制器,然后使用 从 内读取出数据后返回给前端。

在上一章节第五十一章:基于SpringBoot2 & MongoDB完成自动化集成我们讲到了 与 集成后怎么简单的操作数据,当然 家族方式的设计与 一样, 提供了一个 接口来为继承该接口的子接口自动提供代理类完成数据操作实现。

本章目标

使用 自动映射读取 内的数据,省去一系列繁琐的操作步骤。

简书SpringBoot 企业级核心技术学习专题

构建项目

使用 开发工具创建一个 的项目,添加相应的依赖,pom.xml配置文件依赖内容如下所示:

我们本章节的依赖比上一章多了一个 ,通过这个依赖我们可以自动完成 的依赖配置,不需要再手动去创建控制器,因为我们通过一些简单的注解配置以及固定格式名称规则的方法就可以完成控制器的实现。

因为本章的内容需要在上一章的基础上编写,所以我们直接把之前章节的相关的配置以及类都复制到本项目内,复制的内容有: 、 、 。(源码位置:第五十一章源码)

改造CustomerRepository

会自动扫描添加 注解的接口,自动将该接口映射为 可通过 访问的请求路径,这里说到一系列,我们在测试的时候会讲到为什么说是 。 既然需要添加注解,那么我们就打开 接口,对应为它添加上如下注解内容:

注解内需要提供两个参数, :该参数配置映射 内的 名称。 :该参数配置映射完成 后访问的路径前缀。

运行测试

我们先来简单的运行测试下是否可以通过我们配置的 路径实现访问内容,启动项目时我们可以看到控制台的输出内容:

我们配置一个 注解的接口就会根据 内置的一系列的条件生成对应的请求,这也是我们在之前说到的 请求路径的地方,我们先来访问下映射 的路径。

测试 / 映射路径

你如果使用 系统直接打开浏览器输出地址就可以看到返回的内容,如果你使用 或者 系统可以在 使用 命令查看返回内容。

我们访问:http://localhost:8080/customer,路径查看返回的内容:

通过这个地址我们可以读取出 配置的 对应的 集合内的数据,我们发现不仅读取出来了数据而且还为我们提供了 ,这可是很贴心的地方啊,默认读取 , 数据。

测试 // 映射路径

我们访问http://localhost:8080/customer/5adbec9ceb89f105acd90cec(注意:这里的id是你本地生成的,这个id是我本地生成,直接访问会出现404)如下所示:

根据返回的内容看到是能够访问根据 查询的数据内容的。

测试 //search/ 映射路径

这个映射的配置是专门为我们自定义方法准备的,自定义方法的规则与 的方法名称规则一样,当我们在接口创建 方法时 会自动为我们提示相应的内容,下面我们就创建两个不同的查询方法,如下所示:

下面我们重启下项目访问路径http://localhost:8080/customer/search/findByFirstName?firstName=恒宇可以看到返回内容:

自动的根据我们的配置的方法查询出了对应的数据,自动过滤了对应的数据,不过这个是没有分页的。 同样另外一个自定义方法的请求http://localhost:8080/customer/search/findTopByLastName?lastName=少年,也是一样的可以对应的获取过滤后的数据。

注意:@Param注解内的参数名称要与 内的属性对应。

如果你想查看配置的全部自定义的方法,访问:http://localhost:8080/customer/search,如下所示:

总结

本章内容主要是围绕着 这个依赖进行的,这个依赖帮助我们完成了日常编码中一些重复的工作,而且很智能的提供了一些映射,更方便我们进行查询数据。

本章源码已经上传到码云:

SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter

SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录,

感谢阅读!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180625G07WH600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券