博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot实战系列(2)数据存储之NoSQL数据库MongoDB
阅读量:6895 次
发布时间:2019-06-27

本文共 3722 字,大约阅读时间需要 12 分钟。

简介

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案,官方解释。在NoSql数据库中还是比较优秀的一款数据库,且官方网站现在已经逐步开始支持中文版了。 MongoDB 中文版 https://www.mongodb.com/zh

之前MySql介绍了Spring Data Jpa,对于MongoDB,Spring也提供了强大的支持Spring Data MongoDB,这个项目提供了与MongoDB文档数据库的集成。Spring Data MongoDB 官方文档https://spring.io/projects/spring-data-mongodb

注意 在开始之前先开启你的mongod,对于mongodb安装启动有疑问的可以参考这里

快速导航

添加mongodb依赖

项目根目录 pom.xml 添加依赖 spring-boot-starter-data-mongodb

org.springframework.boot
spring-boot-starter-data-mongodb
复制代码

修改配置文件mongodb相关配置

  • mongo2.4以上版本:

    • uri: 数据库链接地址 mongodb://username:password@ip:host
  • mongo2.4以下版本:

    • host: 127.0.0.1
    • port: 27017
    • username: root
    • password: root
    • database: test

application.yml

spring:    data:        mongodb:            uri: mongodb://127.0.0.1:27017            database: test复制代码

定义集合模型

在项目启动时候,以下定义的字段会对应到数据库中的数据结构,注意要添加@Document注解。

  • @Document: 标注于实体类上表明由mongo来维护该集合,默认集合名为类名还可手动指定集合名@Document(collection=user)
  • @Id: 主键,自带索引由mongo生成对应mongo中的_id字段(ObjectId)
  • @Indexed: 设置该字段索引,提高查询效率,设置参数(unique=true)为唯一索引,默认为false
package com.angelo;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.index.Indexed;import org.springframework.data.mongodb.core.mapping.Document;@Documentpublic class User {    @Id    private String id;    @Indexed    private String name;    private Integer age;    @Indexed(unique = true)    private String idCard;    public User() {    }    // 以下getter、setter方法,代码可以参考本节源码}复制代码

创建继承于mongorepository的数据访问对象

创建UserRepository继承于MongoRepository,当然你也可以使用JpaRepository或MongoRepository,这些接口扩展了mongodb的CRUD操作的通用接口,此外还公开了底层持久化技术的功能,供我们扩展。

例如以下findById,MongoRepository提供的接口为Long类型,显然我这里使用mongodb自动生成的ObjectId,自然是不行了,因此扩展了该方法。

UserRepository.java

package com.angelo;import org.springframework.data.mongodb.repository.MongoRepository;import java.util.List;public interface UserRepository extends MongoRepository
{ User findById(String id); List
deleteById(String id);}复制代码

创建控制层实现对数据的增删改查

此处操作Mongodb的增删改查和之前讨论的MySql一样,以下给出代码示例

package com.angelo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;@RestControllerpublic class UserController {    @Autowired    private UserRepository userRepository;    /**     * 查询用户列表     * @return     */    @GetMapping(value = "/user/list")    public List
userList() { return userRepository.findAll(); } @GetMapping(value = "/user/info") public User findUserById(@RequestParam("id") String id) { return userRepository.findById(id); } /** * 创建用户信息 */ @PostMapping(value = "/user") public User createUser(@RequestBody User params) { User user = new User(); user.setName(params.getName()); user.setAge(params.getAge()); user.setIdCard(params.getIdCard()); return userRepository.save(user); } /** * 更新用户信息 */ @PutMapping(value = "/user/{id}") public User updateUser(@PathVariable("id") String id, @RequestParam("name") String name, @RequestParam("age") Integer age, @RequestParam("idCard") String idCard) { User user = new User(); user.setId(id); user.setName(name); user.setAge(age); user.setIdCard(idCard); return userRepository.save(user); } /** * 删除用户信息 * MongoRepository提供的原生方法会报deleteById(java.lang.long) in CurdRepository cannot be applied to (java.lang.string),此处定义的id为String类型显然不符,在UserRepository接口中进行了重写, */ @DeleteMapping(value = "/user/{id}") public void deleteUserById(@PathVariable("id") String id) { userRepository.deleteById(id); }}复制代码

作者:五月君

链接:
来源:慕课网
Github:

转载地址:http://qbkdl.baihongyu.com/

你可能感兴趣的文章
一个开源项目维护者的笔记 — 为什么我关闭 PRs
查看>>
技术人员要失业?未来80% IT 工作将自动化
查看>>
Apache Spark机器学习.1.4 MLlib
查看>>
腾讯Android自动化测试实战3.1.1 什么是Robotium
查看>>
《Wireshark网络分析的艺术》—被误解的TCP
查看>>
《Linux防火墙(第4版)》——1.4 地址解析协议(ARP)
查看>>
《乐在C语言》一1.5 关键词
查看>>
Oracle内核技术揭密
查看>>
《软件工程(第4版?修订版)》—第1章1.3节什么是好的软件
查看>>
《PHP、MySQL和Apache入门经典(第5版)》一一2.7 基本安全规则
查看>>
《无线网络:理解和应对互联网环境下网络互连所带来的挑战》——2.5 3GPP2...
查看>>
《深入理解JavaScript》——2.6 JavaScript是广泛使用的吗
查看>>
Velocity官方指南-应用程序的属性
查看>>
《流量的秘密: Google Analytics网站分析与优化技巧(第3版)》一1.7 网站分析在企业中的位置...
查看>>
Xmemcached 1.2.2发布——支持遍历所有key
查看>>
Spark Streaming 1.6 流式状态管理分析
查看>>
ANTLR快餐教程(2) - ANTLR其实很简单
查看>>
dhtmlxCombo ztree
查看>>
win7入网测试
查看>>
找回kangle后台管理账号和密码
查看>>