自己本科时候一直使用的是Mysql,目前的课题组使用的是MongoDB,因此就花了一部分时间整理了一下,实现springboot与MongoDB的整合,并且实现基本的增删改查操作,从头到尾给出一个完整的案例。

一、环境配置

对于环境配置我是用了一张表来展示,版本之间差异不大,你可以基于其他版本进行测试。

二、代码整合

我们在这里举的例子是对用户类user的增删改查操作。现在我们先看一下现在的项目结构:

下面我们就来看一下具体实现步骤。

第一步:在pom中添加依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--MongoDB相关依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.38</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><!--测试依赖,可去掉--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

第二步:在pom中启动热部署

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--如果没有该项配置,devtools不会起作用,应用不会restart --><fork>true</fork></configuration></plugin></plugins>
</build>

第三步:在application.properties文件中添加全局配置信息

##项目配置
server.port=8888
server.servlet.context-path=/mongotest
##mongodb相关配置
spring.data.mongodb.database=test
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017

第四步:新建bean包并创建User类

public class User {private int id;private String name;private String password;//getter和setter方法
}

第五步:新建dao包并创建UserRepository接口

public interface UserRepository extends MongoRepository<User,Integer> {//查询操作,自己定义实现User getByName(String name);User getByNameLike(String name);
}

注意:getByName中的name要和User中的name名字一样,比如这里就不能写成getByUserName,因为匹配的是userName和User中的字段name不同,运行的时候就会出错。

第六步:新建service包并创建UserService接口

public interface UserService {//增删改查接口public void saveUser(User user);public void removeUserByUserName(String name);public void updateUser(User user);public User getByUserName(String name);public User getByUserNameLike(String name);
}

第七步:在service包创建UserServiceImpl类

@Service//这个标志不要忘记了
public class UserServiceImpl implements UserService {//由于我们添加了依赖,可以使用注解直接注入@Resourceprivate MongoTemplate mongoTemplate;@Resourceprivate UserRepository userRepository;//保存用户@Overridepublic void saveUser(User user) {userRepository.save(user);}//通过用户名字删除@Overridepublic void removeUserByUserName(String name) {Query query=new Query(new Criteria("name").is(name));mongoTemplate.remove(query,User.class);}//通过用户id来更新名字@Overridepublic void updateUser(User user) {Query q=new Query(new Criteria("id").is(user.getId()));Update update=new Update().set("name", user.getName());mongoTemplate.updateMulti(q, update, User.class);}//通过用户名查询@Overridepublic User getByUserName(String name) {return userRepository.getByName(name);}//通过相似用户名查询@Overridepublic User getByUserNameLike(String name) {return userRepository.getByNameLike(name);}
}

在这里你可能有一些疑问,一会使用mongoTemplate,一会又使用userRepository,在每一种情况下到底用哪个,在这里我们就给出一个对比,

(1)使用MongoRepository

使用Repository已经提供了基本的增删改查功能。

对于查询操作:你不用写相关的查询组合语句,它会内部为我们实现这样的一个类。 你只需要按照相关规则就好。

对于增加操作:要有主键才可以,并且不能是date日期类型的。

但是他的缺点是不够灵活,这时候就可以使用MongoTemplate了。

(2)使用MongoTemplate

Spring Data给我们提供了MongoTemplate类,是非常强大的,里面提供了大量的操作数据库的方法,而且是线程安全的。可是它的很多方法都涉及到了Class,和CollectionName。针对不同的实体类,我们需要重复写不同的方法。

第八步:创建controller包并创建Usercontroller类

@RestController
public class UserController {//注入service@Resourceprivate UserService userService;//多增加几个用户@RequestMapping("/save")@ResponseBodypublic String saveUser() {for(int i=0;i<3;i++){User user=new User();user.setId(i);user.setName("fdd"+i);user.setPassword("12345"+i);userService.saveUser(user);}return "插入用户成功";}//删除fdd0@RequestMapping("/remove")@ResponseBodypublic String removeUserByUserName() {userService.removeUserByUserName("fdd0");return "删除用户成功";}//把1号名字改一下@RequestMapping("/update")@ResponseBodypublic String updateUser() {User user=new User();user.setId(1);user.setName("java的架构师技术栈");user.setPassword("123456");userService.updateUser(user);return "更新用户信息成功";}//通过名字查询@RequestMapping("/getUserByName")@ResponseBodypublic User getUserByName() {User user=userService.getByUserName("fdd2");return user;}//通过相似名字查询@RequestMapping("/getUserByNameLike")@ResponseBodypublic User getUserByNameLike() {User user=userService.getByUserNameLike("fdd");return user;}
}

到目前为止我们代码就实现完了。

最后一步,那就是测试:

我们可以在浏览器输入不同的路径测试。当然roto3T也有我们的插入的结果,其他的自己测试一下就好:

OK,这就是整合的整个过程,在这里其实也只是给出一个基础案例,希望对你有帮助。

欢迎关注微信公众号:java的架构师技术栈,回复关键字可获取各种视频教程和新手到架构师的学习路线。

servlet增删改查实例_SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)相关推荐

  1. php mysql增删改查实例_php连接数据库实现用户数据的增删改查实例

    下面小编就为大家带来一篇使用PHP连接数据库_实现用户数据的增删改查的整体操作示例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 main页面(主页面) 代号 姓名 性 ...

  2. Spring Boot整合MongoDB实现增删改查

    MongoDB这两年来是本人一直使用较多的,之前的使用大多通过封装的工具类对数据库进行操作,虽然也算稳定,但有了Spring Boot之前的工具类直接加到SpringBoot里就没那么好使了,因此查阅 ...

  3. servlet mysql insert_servlet+mybatis 实现mysql的增删改查实例

    古人云:温故而知新.趁周末,重新来学习了一遍servlet + mybatis 实现mysql的增删改查,算是对自己学习的一个总结和记录. 开门见山,首先我们来看一下项目目录结构: 不难发现这是一个m ...

  4. Andriod --- JetPack (七):Room + ViewModel + LiveData 增删改查实例

    1.Andriod - JetPack (一):初识 JetPack 2.Andriod - JetPack (二):LifeCycle 的诞生 3.Andriod - JetPack (三):Vie ...

  5. c# 操作oracle数据库,C#连接oracle数据库增删改查实例

    [实例简介] C#连接oracle数据库,增删改查实例,OracleParameter防Sql注入等,适用于新手学习 [实例截图] [核心代码] 5868e8be-414a-4138-8390-2fb ...

  6. python pymysql实例_Python使用pymysql模块操作mysql增删改查实例分析

    Python使用pymysql模块操作mysql增删改查实例分析 发布时间:2020-09-30 16:42:12 来源:脚本之家 阅读:92 本文实例讲述了Python使用pymysql模块操作My ...

  7. IntelliJ Idea SpringBoot 数据库增删改查实例

    . ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \\\\( ( )\___ | '_ | '_| | '_ \/ _` | \\\\ \\/ ___)| | ...

  8. MongoDB的增删改查操作

    前面介绍了MongoDB的基本概念与常见的操作,本文来重点分析下MongoDB的增删改查操作 文章目录 什么是"mongo" 新增操作 删除操作 更新操作 查询操作 Where语句 ...

  9. mongodb android,Android编程连接MongoDB及增删改查等基本操作示例

    本文实例讲述了Android编程连接MongoDB及增删改查等基本操作.分享给大家供大家参考,具体如下: MongoDB简介 Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提 ...

最新文章

  1. ALD技术,相机去噪,图像传感器
  2. Centos8 yum 阿里源配置
  3. 安装软件the error code is 2203解决方法
  4. 【Python项目实战】提取.docx文件中的图片并保存到指定的文件夹
  5. ANSI编码和Unicode编码的不同
  6. JS中的Math.ceil和Math.floor函数的用法
  7. Spring的配置文件详解
  8. 西安电话面试:谈谈Vue数据双向绑定原理,看看你的回答能打几分
  9. 【OS学习笔记】十二 现代处理器的结构和特点
  10. 第十章触发器的创建与管理
  11. qq文件对方接收后一定会有提示吗_QQ要增加消息已读功能,你是否赞成?
  12. 加一度分享5大竞价经验,让流量更大更精准
  13. 昭阳E47A每天第一次开机启动速度慢的原因
  14. 机器学习实践指南(五)—— GD/SGD/MSGD 伪代码演示
  15. 管理系统中的计算机应用答案,《管理系统中计算机应用》试卷答案
  16. 排球记分员计分程序(三)————设计文档的编写及构架概要设计
  17. autoflowchart软件使用步骤_c语言流程图生成器下载|
  18. c语言数组指针移位,C语言数组指针_3
  19. win10关闭端口占用
  20. 自动化车辆的开发、测试和验证场景

热门文章

  1. 反式自动微分autodiff是什么?反向传播(Back Propagation)是什么?它是如何工作的?反向传播与反式自动微分autodiff有什么区别?
  2. pyinstaller打包任何py文件TypeError: an integer is required (got type bytes)
  3. 模型压缩、模型剪枝、模型部署
  4. java display html_css html布局之display属性_动力节点Java学院整理
  5. x86汇编语言从实模式百度云_Intel x86 CPU 32位保护模式杂谈之任务切换 上
  6. matplotlib色彩填充之fill、fill_between
  7. python学习之第四课时--运算符
  8. mysql slave 配置_【mysql5.6】 数据库主从(Master/Slave)配置记录
  9. JAVA基础13-Java抽象方法、抽象类、抽象之模板方法模式
  10. 【ES6】JS第7种数据类型:Symbol