




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章SpringBoot使用NoSQLNoSQL数据库
NoSQL是指非关系型数据库,非关系型数据库和关系型数据库的区别,最重要的是NoSQL不适用SQL作为查询语言。其数据存储可以不需要固定的表格模式,一般都有水平可扩展的特征。NoSQL主要有以下几种分类:
键值存储数据库:键值数据库就像在传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据。文档型数据库:文档数据库会将数据以文档的形式储存。每个文档都是自包含的数据单元,是一系列数据项的集合。列存储数据库:功能相对局限,但是查找速度快,容易进行分布式扩展,一般用于分布式文件系统中。图形(Graph)数据库:我们将数据以图的方式储存,专注于构建关系图谱。2第6章SpringBoot使用NoSQL6.1
整合Redis6.2
整合MongoDB36.1整合Redis6.1.1Redis简介Redis是一个使用ANSIC语言编写的基于内存的NoSQL数据库,是一个高性能的缓存存储系统,整个数据库加载在内存当中进行操作,定期通过异步操作把数据库数据flash到硬盘上进行保存。Redis是目前最为流行的键值对存储数据库,以Key-Value的形式存储数据,没有数据表,直接用键值对的形式存储数据,被称为数据结构服务器。Redis是完全开源的,遵守BSD协议,是一个高性能的内存中的数据结构存储系统,主要用于JavaEE应用的缓存实现,也可作为消息代理(MessageBroker)使用,偶尔作为key-value数据库使用。其中包括字符串(string),列表(list),哈希(hash),集合(set)和有序集合(sortedset)五大类型。46.1.1Redis简介Redis与其他Key-Value缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。56.1.2Redis安装(1)下载Redis访问Redis官网https://redis.io/download,只提供Linux版本的下载,官网推荐使用Linux版本Redis,Redis官方不支持Windows系统。要使用Windows版本的Redis,可从GitHub上下载由Microsoft开放技术小组开发和维护的针对64位的Windows版本,访问/tporadowski/redis/releases,如图6-1所示。选择zip版本或msi版本下载,这里下载Redis-x64-5.0.10.zip的版本,将下载的zip文件解压缩后,放在D:盘的根目录下。66.1.2Redis安装(2)启动Redis服务在运行中输入cmd,然后把目录指向解压的Redis目录,如图6-2所示。执行Redis-x64-5.0.10目录下redis-server.exeredis.windows.conf命令行启动Redis服务,如图6-3所示,表示成功启动Redis服务。
也可直接双击打开Redis目录下的redis-server.exe文件,启动Redis服务。76.1.2Redis安装(3)使用客户端连接Redis服务器
Redis服务器启动成功后,重新打开一个cmd命令窗口,把目录指向解压的Redis目录,使用redis-cli.exe-h-p6379命令,创建一个地址为、端口号为6379的Redis数据库服务,然后输入ping命令,就会输出PONG的提示,表示连接成功,如图6-4所示。也可直接双击打开Redis目录下的redis-cli.exe文件,启动Redis客户端。
(4)操作测试Redis使用setkeyvalue和getkey命令保存和获得数据,如图6-5所示。
86.1.2Redis安装(5)使用Redis客户端工具查看数据使用Redis自带的redis-cli.exe需要通过命令行去操作,可以使用例如RedisClient、RedisDesktopManager、RedisStudio等,这里我们使用RedisClient客户端工具,下载该工具后打开RedisClient,如图6-6所示。
单击Server菜单下的Add,或右击左侧列表中的Redisservers,选择Addserver,添加Redis服务,填入相关信息,如图6-7所示。单击OK按钮后,可以看到Redis服务中的数据库,共16个数据库,db0是默认的数据库名,我们刚才存进去的username就在该数据库中,展开db0数据库,即可看到username的字段数据,如图6-8所示。
96.1.3SpringBoot整合Redis下面通过示例来讲解SpringBoot整合Redis,步骤如下:(1)新建一个SpringBoot工程chapter06redis,Group和Packagename为com.yzpc,在依赖中选择Web节点下的SpringWeb依赖和NoSQL节点下的SpringDataRedis(Access+Driver)依赖,单击Finish按钮,如图6-9所示。
pom.xml中自动添加的依赖代码,代码如下:(2)在perties配置文件中加入有关redis的有关配置,配置如下:10<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--省略Web中SpringWeb依赖代码-->spring.redis.database=0spring.redis.host=localhostspring.redis.port=6379#如果redis有密码,这里就要设置相应密码spring.redis.password=
6.1.3SpringBoot整合Redis(3)在项目的src/mian/java/路径下的com.yzpc包中,新建一个pojo包,在并在该包中数据表user对应的实体类User,代码如下所示。
(4)在项目的src/mian/java/路径下的com.yzpc包中,新建一个controller包,并在该包中创建UserController的类,进行测试,代码如下所示。(5)启动项目,在浏览器访问http://localhost:8080/save,可以看到控制台输出信息,如图6-10所示。11packagecom.yzpc.pojo;importjava.io.Serializable;publicclassUserimplementsSerializable{
privateintid;
privateStringusername;
privateStringpassword;
//此处省略相应属性的setter/getter方法
//此处省略构造方法
//省略重写的toString方法}@RestControllerpublicclassUserController{
@Autowired
RedisTemplateredisTemplate;
@Autowired
StringRedisTemplatestringRedisTemplate;
@GetMapping("/save")
publicvoidsave(){
ValueOperations<String,String>ops1
=stringRedisTemplate.opsForValue();
//添加字符串
ops1.set("username","张三");
Stringusername=ops1.get("username");
System.out.println(username);
ValueOperations
ops2
=redisTemplate.opsForValue();
Useruser=newUser(1,"admin","admin");
//添加实体类
ops2.set("user",user);
System.out.println("Redis是否存在相应的key:"
+
redisTemplate.hasKey("user"));
System.out.println("从Redis数据库中获取对象:"+(User)ops2.get("user"));
//修改
ops2.getAndSet("user",newUser(2,"yzpc","yzpc"));
//查询
Useru=(User)ops2.get("user");
System.out.println("从Redis数据库中获取对象:"
+
u.toString());
//删除
Booleanb=redisTemplate.delete("user");
System.out.println("从Redis中是否删除相应的键为user的对象:"+b);
}}
6.2整合MongoDB6.2.1MongoDB简介MongoDB是一个非常成熟的NoSQL数据库,与Redis采用key-value存储机制不同,MongoDB是基于文档的NoSQL,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案,是NoSQL数据库产品中最热门的一种。MongoDB介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似JSON的BSON(BinaryJSON,二进制JSON)格式,因此可以存储比较复杂的数据类型。MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
126.2.2MongoDB安装MongoDB提供了多种版本操作系统的安装包,这里主要讲解Windows操作系统版本的MongoDB。(1)进入MongoDB官网/try/download/community,下载社区版的安装包,这里选择Windows平台下4.2.12版本的msi安装包,点击Download按钮进行下载,如图6-11所示。
(2)下载完成后得到mongodb-win32-x86_64-2012plus-4.2.12-signed.msi的安装文件,双击安装文件开始安装,然后根据提示单击Next按钮即可,当进入如图6-12所示的界面时,去掉InstallMongoDBCompass前面的复选框,否则安装会特别慢。136.2.2MongoDB安装(3)如果使用MongoDB可视化的图形界面管理工具MongoDBCompass操作MongoDB数据库,可从官方网站/try/download/compass单独下载相应版本的MongoDBCompass进行安装,如图6-13所示。(4)安装MongoDBCompass可视化工具,完成后运行MongoDBCompass工具,如图6-14所示。(5)点击“Fillinconnectionfieldsindividually”链接可填写数据库连接相关配置,这里采用默认值,点击CONNECT按钮,连接成功之后,显示出默认自带的三个数据库(admin、config、local),如图6-15所示。146.2.3SpringBoot整合MongoDB
下面通过示例来讲解SpringBoot整合MongoDB,具体步骤如下:(1)使用MongoDBCompass工具创建名为chapter06的数据库,在MongoDBCompass工具界面上点击“CREATEDATABASE”按钮或界面左侧下方的“+”,在创建数据库界面中,DatabaseName处输入chapter06,CollectionName处输入book,如图6-16所示。(2)新建一个SpringBoot工程chapter06mongodb,Group和Packagename为com.yzpc,在Dependencies依赖中选择Web节点下的SpringWeb依赖和NoSQL节点下的SpringDataMongoDB依赖,单击Finish按钮,如图6-17所示。156.2.3SpringBoot整合MongoDBpom.xml文件中自动添加的依赖代码,如下所示。
在perties配置文件中加入mongodb数据库连接的有关配置信息如下。(3)在项目的src/mian/java/路径下的com.yzpc包中,新建一个pojo包,并在该包中新建实体类Book,使用@Document(collection="book")注解通过collection参数指定Book类声明为mongodb的文档集合book,代码如下所示。(4)在项目的src/mian/java/路径下的com.yzpc包中,新建一个repository包,并在该包中创建BookRepository的接口,并继承MongoRepository接口,代码如下所示。16<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><!--省略Web中SpringWeb依赖代码-->spring.data.mongodb.uri=mongodb://localhost:27017/chapter06packagecom.yzpc.pojo;importorg.springframework.data.annotation.Id;importorg.springframework.data.mongodb.core.mapping.Document;@Document(collection="book") publicclassBook{
@Id //主键,不可重复,自带索引
privateintid;
privateStringname;
privateStringpublisher;
privatedoubleprice;
//此处省略相应属性的setter/getter方法
//此处省略构造方法
//重写toString方法}packagecom.yzpc.repository;importcom.yzpc.pojo.Book;importorg.springframework.data.mongodb.repository.MongoRepository;importorg.springframework.stereotype.Repository;importjava.util.List;@RepositorypublicinterfaceBookRepositoryextendsMongoRepository<Book,Integer>{
BookfindById(intid);
BookfindByName(Stringname);
List<Book>findBooksByNameContains(Stringname);}6.2.3SpringBoot整合MongoDB(5)在项目的src/mian/java/路径下的com.yzpc包中,新建一个controller包,并在该包中创建BookController的类,这里以保存图书列表saveBooks、根据id查询图书findById为例,代码如下所示。(6)启动项目,在浏览器中访问http://localhost:8080/saveBooks,测试向chapter06数据库的book集合中存入4条记录,并将此4条记录在页面输出,如图6-18所示。
访问http://localhost:8080/findById?id=4,查询id为4的记录,如图6-20所示。17@RestController
publicclassBookController{
@Autowired
BookRepositorybookRepository;
@GetMapping("/saveBooks")
publicList<Book>saveBooks(){
List<Book>bookList=newArrayList<Book>();
bookList.add(newBook(1,"SpringBoot编程思想","电子工业出版社",118.00));
bookList.add(newBook(2,"SpringBoot开发实战","清华大学出版社",59.90));
bookList.add(newBook(3,"SpringBoot2实战之旅","清华大学出版社",79.00));
bookList.add(newBook(4,"SpringBoot实战派","电子工业出版社",109.00));
returnbookRepository.saveAll(bookList);
}
@GetMapping("/findById")
publicBookfindById(intid){
returnbookRepository.findById(id);
}//省略addBook、findByName、updateBook、deleteBookByName等方法}6.2.3SpringBoot整合MongoDB(7)除了继承MongoRepository实现对数据操作外,SpringDataMongoDB还通了使用MongoTemplate用来方便操作MongoDB。在SpringBoot中,若添加了MongoDB相关的依赖,则默认会有一个MongoTemplate注册到Spring容器中,相关的配置源码在MongoDataAutoConfiguration类中。因此,用户可以直接使用MongoTemplate,在Controller中直接注入MongoTemplate就可以使用,添加代码到BookController中,这里以添加记录和查询记录为例,代码如下所示。重新启动项目,访问
http://localhost:8080/saveBook,测试向chapter06数据库的book集合中插入记录,使用MongoDBCompass工具查看集合中的记录,查看是否插入成功。访问http://
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国漆包线行业市场发展现状及前景趋势与投资分析研究报告(2024-2030版)
- ktv用工合同范本
- 代收款合同范例
- 修缮场地劳务合同范本
- 传媒公司总包合同范本
- 电子商务在智能家居领域的应用
- 资料员半年工作总结
- 用数字与技术演绎绿色的故事-对新兴电竞产业中的可持续发展理念思考
- 房子安全合同范本
- 电子政务的商业模式与发展趋势研究
- 市政工程监理规划范本(完整版)
- 幼儿园小班语言:《我上幼儿园》 PPT课件
- 高标准农田项目规划设计和评审要点
- 小学三年级下册综合实践活动.水果拼盘-(14张)ppt
- 部编版二年级语文下册第三单元课文《传统节日》PPT课件
- 北京市城市建设节约用地标准
- 开学第一课我们开学啦主题班会PPT课件(带内容)
- 电源线检验报告RVV
- 体育训练队队规
- 八字命理漫画版
- 电梯工程开工报告(直梯)(共1页)
评论
0/150
提交评论