关于mongodb:MongoDB-入门教程系列之三使用-Restful-API-操作-MongoDB

1次阅读

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

本教程的前两篇文章,别离介绍了如何应用 Node.js,一般的 Java 利用以及 SpringBoot 利用对 MongoDB 进行读写访问。

  • MongoDB 入门教程系列之一:开发环境搭建以及 Node.js 和 Java 的读写访问
  • MongoDB 入门教程系列之二:应用 Spring Boot 操作 MongoDB

本文介绍另一种采取 Restful API 的形式来操纵 MongoDB.

应用 SpringBoot 开发 Restful API 对 MongoDB 进行读写访问

通过 Spring Boot 结构出 Restful API,这样能够间接在浏览器里通过调用 Restful API,对 MongoDB 进行增删查改了。

先看依照本教程介绍的步骤,实现的最终成果。

假如我本地 MongoDB 的数据库里有一张表 book,只有一条记录,id 为 1.

通过浏览器里的这个 url 依据 id 读取该记录:http://localhost:8089/bookman…

采取如下 url 进行记录的创立:

http://localhost:8089/bookman…


记录搜寻操作的 url:http://localhost:8089/bookman…*

记录的删除:删除 id 为 2 的记录

http://localhost:8089/bookman…

上面是上述性能的实现细节。

  1. 创立一个新的 controller,位于文件夹 src/main/java 下。

这个 controller 加上注解 @RestController.

@RestController 注解相当于 @ResponseBody@Controller 这两个注解提供的性能的并集。

这里有一个知识点就是,如果用注解 @RestController 定义一个 Controller,那么这个 Controller 里的办法无奈返回 jsp 页面或者 html 页面,因为 @ResponseBody 注解在起作用。所以即便配置了视图解析器 InternalResourceViewResolver 也不会失效,此时返回的内容就是 @RestController 定义的控制器办法里返回的内容。

  1. 以读操作为例,通过注解 @GetMapping 定义了读操作 Restful API 的 url 为 bookmanage/read.

@RequestParam 定义了 url:bookmanage/read 前面的参数为 id 或者 name.

读操作最终将会应用咱们之前介绍过的 Java 拜访 MongoDB 的办法,即通过 @Autowired 注入的 BookRepository 实例实现对 MongoDB 的操作。

  1. 创立操作的源代码:
@GetMapping("/bookmanage/create")
public Book create(@RequestParam(value="id", defaultValue="") String id,
@RequestParam(value="name", defaultValue="noname") String name,
@RequestParam(value="author", defaultValue="noauthor") String author
){Book book = repository.save(new Book(id,name,author));
     return book;
}

  1. 删除操作的源代码:
@GetMapping("/bookmanage/delete")
public boolean delete(@RequestParam(value="id", defaultValue="") String id
){
    //if no record
     if(repository.findById(id)==null)
           return false;
     // do database delete
     repository.deleteById(id);
    return true;
}

如何在 SAP 云平台上应用 MongoDB

我想在 SAP 云平台的 Cloud Foundry 环境下应用 MongoDB 服务,然而在 Service Marketplace 上找不到这个服务。

命令行 cf marketplace 返回的后果也没有 MongoDB 相干的服务:

解决方案

退回到 SAP 云平台的 Global Account,点击 Entitlement,发现没有给 Subaccount 调配 MongoDB:

Quota 调配成 1,保留即可。

再回到 organization 的 space 上面,发现当初 MongoDB 服务曾经处于可用状态了。

命令行 cf marketplace 当初可能看到 MongoDB 服务的版本了:

上面是在 SAP 云平台 CloudFoundry 环境应用 MongoDB 服务的具体步骤。

  1. 应用命令行 cf marketplace 查看以后 SAP 云平台的 MongoDB 服务的版本号:在我应用的 SAP 云平台上是 v3.0-dev:

应用如下命令行创立一个服务实例:

cf create-service mongodb v3.0-dev mongo-service

  1. 到 Java 我的项目根目录下,应用命令行 mvn package:

能看到如下的输入:


该命令会生成一个 hcp-cf-mongodb-tutorial-1.0-SNAPSHOT.jar

  1. 编辑 manifest.yml,指定部署到 SAP 云平台上的程序名称:

  1. 应用命令行 cf push 进行部署。

部署胜利后,在 Cockpit 里能看到该利用处于 Started 状态:



浏览器拜访该利用,能看到如下输入:

该输入是 Java 我的项目里的 RootController 生成的:

最初咱们对 SAP UI5 Repository 和 MongoDB Repository 进行比拟,作为本系列的结尾。

UI5 Repository

从本地通过 Eclipse team provider 上传到 ABAP gateway system 的 UI5 利用,都会主动生成一个 UI5RepositoryPathMapping.xml 文件,外面记录的是 debug version 的脚本文件名称和门路的映射关系。如下图所示:

管制这个映射文件的拜访工具类 manipulation utility 的名称:

UI5/CL_UI5_REP_PATH_MAPPER

SpringBoot 利用里的 MongoDB Repository

和 ADBC 与 JDBC 不同,通过 MongoDB Repository 拜访 MongoDB 数据库,并不会在代码中呈现用字符串拼接的 SQL 语句:

例如咱们查看 findByName 的定义:

findByName 的实现:第 20 行代码结构一个 Query 实例,而后将其传入 21 行 mongoTemplatefind 办法:

总结

本文首先介绍了如何应用 SpringBoot 利用开发 Restful API,从而可能在浏览器里就能对 MongoDB 的读写操作进行测试,接着介绍了如何在通用的云平台 CloudFoundry 环境里生产 MongoDB 服务。

本教程前两篇文章:

  • MongoDB 入门教程系列之一:开发环境搭建以及 Node.js 和 Java 的读写访问
  • MongoDB 入门教程系列之二:应用 Spring Boot 操作 MongoDB
正文完
 0