本文源码:GitHub·点这里 || GitEE·点这里

一、NoSQL简介

1、NoSQL 概念

NoSQL( Not Only SQL ),意即"不仅仅是SQL"。对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

2、NoSQL的优点/缺点

  1. --优点:
  2. 高可扩展性
  3. 分布式计算
  4. 低成本
  5. 架构的灵活性,半结构化数据
  6. 没有复杂的关系
  7. --缺点:
  8. 没有标准化
  9. 有限的查询功能(到目前为止)
  10. 数据展现不直观

二、MongoDB数据库

1、MongoDB简介

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2、MongoDB特点

1)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

2)在高负载的情况下,添加更多的节点,可以保证服务器性能。

3)MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

4)MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

三、与SpringBoot2.0整合

1、MongoDB基础环境

  1. # 打开命令行
  2. MongoDB4.0\bin>mongo
  3. # 展示所有数据库
  4. > show databases
  5. # 新建一个admin数据库,命令比较难为情
  6. > db.admin.insert({"name":"管理员数据库"});
  7. # 使用admin数据库
  8. > use admin
  9. # 创建root用户,具有读写权限
  10. > db.createUser({user:"root",pwd:"root",roles:[{role:"readWrite",db:"admin"}]})
  11. Successfully added user:

2、核心依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-mongodb</artifactId>
  4. </dependency>

3、配置文件

用户名:root

密码:root

数据库:admin

  1. spring:
  2. data:
  3. mongodb:
  4. uri: mongodb://root:root@localhost:27017/admin

4、封装应用接口

  1. public interface ImgInfoRepository {
  2. void saveImg(ImgInfo imgInfo) ;
  3. ImgInfo findByImgTitle(String imgTitle);
  4. long updateImgInfo(ImgInfo imgInfo) ;
  5. void deleteById(Integer imgId);
  6. }

5、核心代码块

MongoDB的使用方式如下。

  1. import com.boot.mongodb.entity.ImgInfo;
  2. import com.boot.mongodb.repository.ImgInfoRepository;
  3. import com.mongodb.client.result.UpdateResult;
  4. import org.springframework.data.mongodb.core.MongoTemplate;
  5. import org.springframework.data.mongodb.core.query.Criteria;
  6. import org.springframework.data.mongodb.core.query.Query;
  7. import org.springframework.data.mongodb.core.query.Update;
  8. import org.springframework.stereotype.Service;
  9. import javax.annotation.Resource;
  10. @Service
  11. public class ImgInfoRepositoryImpl implements ImgInfoRepository {
  12. @Resource
  13. private MongoTemplate mongoTemplate;
  14. @Override
  15. public void saveImg(ImgInfo imgInfo) {
  16. mongoTemplate.save(imgInfo) ;
  17. }
  18. @Override
  19. public ImgInfo findByImgTitle(String imgTitle) {
  20. Query query=new Query(Criteria.where("imgTitle").is(imgTitle));
  21. return mongoTemplate.findOne(query,ImgInfo.class);
  22. }
  23. @Override
  24. public long updateImgInfo(ImgInfo imgInfo) {
  25. Query query = new Query(Criteria.where("imgId").is(imgInfo.getImgId()));
  26. Update update= new Update().set("imgTitle", imgInfo.getImgTitle()).set("imgUrl", imgInfo.getImgUrl());
  27. UpdateResult result = mongoTemplate.updateFirst(query,update,ImgInfo.class);
  28. return result.getMatchedCount();
  29. }
  30. @Override
  31. public void deleteById(Integer imgId) {
  32. Query query = new Query(Criteria.where("imgId").is(imgId));
  33. mongoTemplate.remove(query,ImgInfo.class);
  34. }
  35. }

6、测试代码块

  1. import com.boot.mongodb.MongoDBApplication;
  2. import com.boot.mongodb.entity.ImgInfo;
  3. import com.boot.mongodb.repository.ImgInfoRepository;
  4. import org.junit.Test;
  5. import org.junit.runner.RunWith;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  8. import javax.annotation.Resource;
  9. import java.util.Date;
  10. @RunWith(SpringJUnit4ClassRunner.class)
  11. @SpringBootTest(classes = MongoDBApplication.class)
  12. public class MongoTest {
  13. @Resource
  14. private ImgInfoRepository imgInfoRepository ;
  15. @Test
  16. public void test1 (){
  17. ImgInfo record = new ImgInfo() ;
  18. record.setImgId(1);
  19. record.setUploadUserId("A123");
  20. record.setImgTitle("博文图片");
  21. record.setSystemType(1) ;
  22. record.setImgType(2);
  23. record.setImgUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");
  24. record.setLinkUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");
  25. record.setShowState(1);
  26. record.setCreateDate(new Date());
  27. record.setUpdateDate(record.getCreateDate());
  28. record.setRemark("知了");
  29. record.setbEnable("1");
  30. imgInfoRepository.saveImg(record);
  31. }
  32. @Test
  33. public void test2 (){
  34. ImgInfo imgInfo = imgInfoRepository.findByImgTitle("博文图片") ;
  35. System.out.println("imgInfo === >> " + imgInfo);
  36. }
  37. @Test
  38. public void test3 (){
  39. ImgInfo record = new ImgInfo() ;
  40. record.setImgId(1);
  41. record.setUploadUserId("A123");
  42. record.setImgTitle("知了图片");
  43. record.setSystemType(1) ;
  44. record.setImgType(2);
  45. record.setImgUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");
  46. record.setLinkUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");
  47. record.setShowState(1);
  48. record.setCreateDate(new Date());
  49. record.setUpdateDate(record.getCreateDate());
  50. record.setRemark("知了");
  51. record.setbEnable("1");
  52. long result = imgInfoRepository.updateImgInfo(record) ;
  53. System.out.println("result == >> " + result);
  54. }
  55. @Test
  56. public void test4 (){
  57. imgInfoRepository.deleteById(1);
  58. }
  59. }

四、源代码地址

  1. GitHub·地址
  2. https://github.com/cicadasmile/spring-boot-base
  3. GitEE·地址
  4. https://gitee.com/cicadasmile/spring-boot-base

SpringBoot2.0 基础案例(15):配置MongoDB数据库,实现增删改查逻辑的更多相关文章

  1. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

  2. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  3. 69.nodejs对mongodb数据库的增删改查操作

    转自:https://www.cnblogs.com/sexintercourse/p/6485381.html 首先要确保mongodb的正确安装,安装参照:http://docs.mongodb. ...

  4. 在IDEA中用三个jar包链接MongoDB数据库——实现增删改查

    安装Robo 3T连接MongoDB数据库教程:https://blog.csdn.net/baidu_39298625/article/details/98845789 使用Robo 3T操作Mon ...

  5. 【2017-06-01】Linq基础+Lambda表达式实现对数据库的增删改查

    一.Linq to sql 类 高集成化的数据库访问技术 使用Linq可以代替之前的Ado.Net.省去了自己敲代码的实体类和数据访问类的大量工作. 实体类: 添加一个Linq to sql 类 -- ...

  6. SpringBoot2.0 基础案例(12):基于转账案例,演示事务管理操作

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.事务管理简介 1.事务基本概念 一组业务操作ABCD,要么全部 ...

  7. 封装对MongoDB数据库的增删改查访问方法(基于MongoDB官方发布的C#驱动)

    本文利用MongoDB官方发布的C#驱动,封装了对MongoDB数据库的增删改查访问方法.先用官方提供的mongo-csharp-driver ,当前版本为1.7.0.4714 编写数据库访问帮助类 ...

  8. 十四:SpringBoot-配置MongoDB数据库,实现增删改查逻辑

    SpringBoot-配置MongoDB数据库,实现增删改查逻辑 1.MongoDB数据库 1.1 MongoDB简介 1.2 MongoDB特点 2.SpringBoot整合MongoDB 2.1 ...

  9. java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

    1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

随机推荐

  1. 使用if判断字符串的长度是否等于10,根据结果进行不同的输出

    string1=' print(len(string1)) # 使用len()计算字符串长度 if not len(string1) ==10: print('字符串的长度不为10') else: p ...

  2. SQL- SQL查询检索阶段一

    一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统: 二 准备前提 需要建立一张学生表,列分别是id,名称, ...

  3. 记MAC地址、磁盘序列号的获取

    import java.io.*; import java.net.Inet4Address; import java.net.InetAddress; import java.net.Network ...

  4. c++-多态和vptr指针

    多态的原理 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class Parent { ...

  5. SpringCloud-服务注册与实现-Eureka创建服务提供者(附源码下载)

    场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  6. 【STM32H7教程】第34章 STM32H7的定时器应用之TIM1-TIM17的PWM实现

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第34章       STM32H7的定时器应用之TIM1-T ...

  7. P1983 车站分级 思维+拓扑排序

    很久以前的一道暑假集训的题,忘了补. 感觉就是思维建图,加拓扑排序. 未停靠的火车站,必然比停靠的火车站等级低,就可以以此来建边,此处注意用vis来维护一下,一个起点和终点只建立一条边,因为不这样的话 ...

  8. 移动端H5页面开发,碰到一个字体变大的BUG

    移动端H5页面开发,碰到一个字体变大的BUG webkit内核下,对不定高宽的元素可能会放大其字体.那么,就可以设置一个max-width:或者使用-webkit-text-size-adjust: ...

  9. WPF 3D Cube及点击交互

    在WPF中构建一个简单的立方体比较容易实现,可参考资料也比较众多.比较麻烦的是处理点击交互. 我在WPF中用两种方式实现了3DCube,效果图如下: 方式一: 最常见的3D内容构建模式,结构如下图. ...

  10. Socket实现简易聊天室,Client,Server

    package seday08; import java.io.BufferedWriter;import java.io.OutputStream;import java.io.OutputStre ...