本文源码
GitHub地址:知了一笑
https://github.com/cicadasmile/spring-boot-base

一、NoSQL简介

1、NoSQL 概念

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

2、NoSQL的优点/缺点

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

二、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基础环境

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

2、核心依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

3、配置文件

用户名:root
密码:root
数据库:admin

spring:data:mongodb:uri: mongodb://root:root@localhost:27017/admin

4、封装应用接口

public interface ImgInfoRepository {void saveImg(ImgInfo imgInfo) ;ImgInfo findByImgTitle(String imgTitle);long updateImgInfo(ImgInfo imgInfo) ;void deleteById(Integer imgId);
}

5、核心代码块

MongoDB的使用方式如下。

import com.boot.mongodb.entity.ImgInfo;
import com.boot.mongodb.repository.ImgInfoRepository;
import com.mongodb.client.result.UpdateResult;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class ImgInfoRepositoryImpl implements ImgInfoRepository {@Resourceprivate MongoTemplate mongoTemplate;@Overridepublic void saveImg(ImgInfo imgInfo) {mongoTemplate.save(imgInfo) ;}@Overridepublic ImgInfo findByImgTitle(String imgTitle) {Query query=new Query(Criteria.where("imgTitle").is(imgTitle));return mongoTemplate.findOne(query,ImgInfo.class);}@Overridepublic long updateImgInfo(ImgInfo imgInfo) {Query query = new Query(Criteria.where("imgId").is(imgInfo.getImgId()));Update update= new Update().set("imgTitle", imgInfo.getImgTitle()).set("imgUrl", imgInfo.getImgUrl());UpdateResult result = mongoTemplate.updateFirst(query,update,ImgInfo.class);return result.getMatchedCount();}@Overridepublic void deleteById(Integer imgId) {Query query = new Query(Criteria.where("imgId").is(imgId));mongoTemplate.remove(query,ImgInfo.class);}
}

6、测试代码块

import com.boot.mongodb.MongoDBApplication;
import com.boot.mongodb.entity.ImgInfo;
import com.boot.mongodb.repository.ImgInfoRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import java.util.Date;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MongoDBApplication.class)
public class MongoTest {@Resourceprivate ImgInfoRepository imgInfoRepository ;@Testpublic void test1 (){ImgInfo record = new ImgInfo() ;record.setImgId(1);record.setUploadUserId("A123");record.setImgTitle("博文图片");record.setSystemType(1) ;record.setImgType(2);record.setImgUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");record.setLinkUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");record.setShowState(1);record.setCreateDate(new Date());record.setUpdateDate(record.getCreateDate());record.setRemark("知了");record.setbEnable("1");imgInfoRepository.saveImg(record);}@Testpublic void test2 (){ImgInfo imgInfo = imgInfoRepository.findByImgTitle("博文图片") ;System.out.println("imgInfo === >> " + imgInfo);}@Testpublic void test3 (){ImgInfo record = new ImgInfo() ;record.setImgId(1);record.setUploadUserId("A123");record.setImgTitle("知了图片");record.setSystemType(1) ;record.setImgType(2);record.setImgUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");record.setLinkUrl("https://avatars0.githubusercontent.com/u/50793885?s=460&v=4");record.setShowState(1);record.setCreateDate(new Date());record.setUpdateDate(record.getCreateDate());record.setRemark("知了");record.setbEnable("1");long result = imgInfoRepository.updateImgInfo(record) ;System.out.println("result == >> " + result);}@Testpublic void test4 (){imgInfoRepository.deleteById(1);}
}

四、源代码地址

GitHub地址:知了一笑
https://github.com/cicadasmile/spring-boot-base
码云地址:知了一笑
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. mongodb数据库的增删改查(有图有demo)

    名词注释 下面的截图中,有一些名词需要解释一下,方便理解和应用: cuckoo叫库名,也就是数据库的名字 users叫集合名,也就是colloction的名字 右侧带_id的一排排的, 那叫文档 而_ ...

  4. java创建mongdb数据库_【转发】Java使用MongoDB数据库进行增删改查

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_26584263/article/ ...

  5. SpringBoot2.0基础案例分类总结,后续更新计划说明

    一.基础案例 1.基础案例概览 历时一个半月,SpringBoot2.0基础案例的文章基本更新完毕了,基础案例包含了SpringBoot的基础教程,高级应用,日志配置,数据库使用,事务管理等.关于Sp ...

  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. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. 通过Loadruner对mysql数据库进行增删改查

    通过Loadruner对mysql数据库进行增删改查 操作mysql数据库,是在实现mysql数据源配置的基础上操作,可先阅读:loadrunner参数化使用mysql数据源失败解决方法 写之前先理一 ...

最新文章

  1. pycharm中的terminal解释器和project 解释器不统一问题
  2. 更换YUM及升级包方法
  3. 【资源】C++学习资料 - 逆天整理 - 精华无密版【最新】
  4. 16道嵌入式C语言面试题(转载)
  5. @EnableAutoConfiguration注解的实现原理
  6. python for in语句 index_使用for循环查找句子中的单词及其索引位置
  7. C#LeetCode刷题-蓄水池抽样
  8. MOSS 2010:Visual Studio 2010开发体验(23)——编写自定义的BCS连接器
  9. python出租车收费_使用Python分析纽约出租车搭乘数据
  10. PDFLib9以上版本的去水印办法
  11. FaceBook 遭遇有史以来全球最大宕机
  12. 5大原因告诉你,Python程序员为何如此难招!
  13. 二分算法。yxc教的
  14. 图计算思维与实践 (一)概览
  15. Abstract Factory模式(抽象工厂模式)
  16. mybatis多表操作(一对一、一对多、多对多)
  17. Python---GPA(绩点)计算器
  18. 2022年全网最全AI绘画产品整理(一共23款,免费的绘画次数用到你手软)
  19. Cert Prep: Certified SOLIDWORKS Professional Cert Prep:认证的SOLIDWORKS Professional Lynda课程中文字幕
  20. unity常见面试笔试题

热门文章

  1. LeetCode:917. 仅仅反转字母
  2. 计算机网络之网络层:8、开放最短路径优先算法OSPF
  3. 计算机网络之数据链路层:9、ALOHA协议-随机访问介质访问控制
  4. Java Map接口详解
  5. openssl 对文本加密解密
  6. 操作系统实践(四/五)
  7. Java 并发框架Disruptor(七)
  8. 深入理解 Node.js 中 EventEmitter源码分析(3.0.0版本)
  9. js实现表单checkbox的单选,全选
  10. Eval绑定日期时,修改日期显示的格式