SpringBoot数据层解决方案/ 内置持久化解决方案JdbcTemplate使用/内置数据库H2使用以及RedisNoSql使用

news2025/1/8 5:23:49

写在前面
继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!

3.4 数据层解决方案

3.4.1 使用项目

新建空项目,加入数据库驱动,改为Web项目,如图![[Pasted image 20220803110135.png]]

3.4.2 SQL

3.4.2.1 数据源配置

  • SpringBoot提供了3种内嵌的数据源对象供开发者选择,如
    • HiKariCp(默认)
    • Tomcat提供DataSource:上个不可用且在Web环境中会使用
    • Commons DBCP:前两者均不可用
  • 通用配置无法设置具体的数据源配置信息,仅提供基本的连接相关配置,可在下一级中进行配置,如图![[Pasted image 20220803110042.png]]

3.4.2.2 内置持久化解决方案-JdbcTemplate

  • pom文件添加依赖,如图![[Pasted image 20220802182110.png]]
  • yml 配置Template,如下:
jdbc:  
  template:  
    fetch-size: 10 #缓存行数  
    max-rows: 500 #最大行数  
    query-timeout: 10 #查询超时时间
  • jdbc查询代码如下:
@Test  
public void getUsers(@Autowired JdbcTemplate jdbcTemplate){  
    String sql = "select * from user";  
    RowMapper<User> rowMapper = new RowMapper<User>() {  
        @Override  
        public User mapRow(ResultSet rs, int rowNum) throws SQLException {  
            User user = new User();  
            user.setId(rs.getInt("id"));  
            user.setPassword(rs.getString("password"));  
            user.setUsername(rs.getString("username"));  
            return user;  
        }  
    };  
    List<User> query = jdbcTemplate.query(sql, rowMapper);  
    query.forEach(System.out::println);  
}

3.4.2.3 内置数据库

3.4.2.3.1 介绍

SpringBoot提供了3种内嵌数据库供选择,有H2,HSQL,Derby,仅仅用于测试开发,线上务必关掉yml配置中enabled为false

3.4.2.3.2 配置
  • 添加H2相关依赖,如图![[Pasted image 20220803111254.png]]
  • 配置yml,如下:
# H2数据库配置  
server:  
  port:  8080
spring:  
  h2:  
    console:  
#      访问用户名sa,密码123456  
      enabled: true  
      path: /h2  
  #  第一次连接需要,后面可不需要
  datasource:  
    url: jdbc:h2:~/test  
    driver-class-name: org.h2.Driver  
    username: sa  
    password: 123456
3.4.2.3.3 操作
  • 数据库控制台可在浏览器打开,输入网址http://localhost:8080/h2即可打开,如图![[Pasted image 20220803113059.png]]
  • 创建表,如图![[Pasted image 20220803113557.png]]
    ,创建成功后可看到新建表,如图![[Pasted image 20220803113626.png]]
  • 添加表数据,如图![[Pasted image 20220803114047.png]]
  • 查询操作,使用jdbc查询语句后可发现操作成功,如图![[Pasted image 20220803114508.png]]

3.4.3 NoSQL

3.4.3.1 介绍

市面上主流NoSQL解决方案为Redis,Mongodb 和ES,这里用的是Windows版

3.4.3.2 Redis

3.4.3.2.1 安装及使用

安装详见CSDN

3.4.3.2.2 SpringBoot整合Redis
  • 新建项目,过程中添加Redis相关配置,如图![[Pasted image 20220829140754.png]]
    ,可在pom看到Redis相应坐标,如图![[Pasted image 20220829142557.png]]
  • 配置,在yml中添加端口地址等信息,如下:
spring:  
  redis:  
#    默认配置  
    port: 6379  
    host: localhost
  • 操作,使用的是RedisTemplate,以对象作为key和value,内部对数据进行序列化,主要有Set,HashSet等数据类型接口,如图![[Pasted image 20220829142850.png]]
    ,简单使用如图![[Pasted image 20220829143025.png]]
    注:客户端使用的StringRedisTemplate,以字符串作为key和value,必须使用它才能在客户端进行统一交互查询操作。
3.4.3.2.3 Jedis和Lettcue
  • Jedis和Lettcue均是Redis在SpringBoot中来操作Redis客户端的技术
  • 默认是Lettcue技术,切换则需要添加坐标及更改使用,如图![[Pasted image 20220829150203.png]]
    ![[Pasted image 20220829150254.png]]
  • 两者区别:
    • jedis :连接服务器是直连,当多线程模式下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个连接专用,这样整体性能就大受影响。
    • Lettcue基于Netty框架进行Redis服务器连接,底层设计中采用StatefulRedisConnection。StatefulRedisConnection自身线程是安全的,可以保障并发访问安全问题,所以一个连接可以被多线程复用,也支持多连接实例一起工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis的事务

Redis的事务&#xff1a;一次事务操作&#xff0c;改成功的成功&#xff0c;该失败的失败。 提交事务 如果遇见错误 成功的成功&#xff0c;失败的失败&#xff0c;不会回滚 先开启事务&#xff0c;执行一些列的命令&#xff0c;但是命令不会立即执行&#xff0c;会被放在一…

web分享会

文章目录前言平台1. 在线练习平台2. 自己搭建靶场3. CTF真题平台分享前言 个人的学习过程仅供参考。 个人情况 我是大二进的工作室&#xff0c;算是比较晚的了&#xff0c;工作室的师兄人也很好&#xff0c;我有问题也会去找他们。我是一位女生&#xff0c;非常欢迎师妹们加入&…

从购买云服务器开始到成功部署网站并且可以正常外网访问整个体系流程(从0到1的过程)

准备工作&#xff1a; 购买云服务器(阿里云或腾讯云都行)&#xff0c;过程一样。购买域名&#xff0c;并做解析处理&#xff0c;通过域名访问网站(后面需要自行备案)。 云服务器一些基本配置处理&#xff1a; 用密码登录方式登录root用户到云服务器上 登录成功后&#xff0c…

MHDNet

发现一种性能更优的目标检测网络&#xff0c;不同的输入分辨率下&#xff0c;目标分布和检测头之间存在不同的匹配关系。基于这些有指导意义的发现&#xff0c;作者提出了一种基于检测头和目标分布之间匹配的轻量化交通目标检测网络&#xff0c;称为MHDNet。该模型在BDD100K数据…

【k8s】3、kubeadm安装k8s集群

文章目录一、环境部署1、关闭防火墙规则、关闭selinux、关闭swap交换分区2、修改主机名、DNS解析3、调整内核参数二、所有节点安装Docker三、安装k8s集群1、所有节点配置K8S源2、所有节点安装kubeadm、kubelet和kubectl3、部署K8S集群3.1 初始化操作&#xff08;master节点操作…

【虚幻引擎UE】UE4/UE5 环境构建插件推荐及使用介绍

一、Ultra Dynamic Sky&#xff08;天气插件&#xff09; 支持天气和昼夜变换&#xff0c;包含音效&#xff0c;可以预设也可以动态切换。内置照明解决方案&#xff0c;太阳、月亮和天空照明均与天空同步&#xff0c;并随时间变化。 天气包含&#xff1a;晴天、2D晴天、雨天、…

进程的通信 - 命名管道

命名管道概述 命名管道&#xff08;Named Pipes&#xff09;&#xff0c;顾名思义&#xff0c;一个有名字的管道。命名管道的名字主要是用于确保多个进程访问同一个对象。命名管道不仅可以在同一台计算机之间传输数据&#xff0c;甚至能在跨越一个网络的不同计算机的不同进程之…

Zbrush 导出置换 然后导入vray 在 3ds max 和 maya 设置

注&#xff1a;方法很多&#xff0c;这个只是个人学习总结&#xff0c;如果不合适&#xff0c;可另外学习其他方法&#xff01; 第一步&#xff1a; Zbrush 导出置换和法线设置&#xff1a; 第二步&#xff1a; 3Ds max 设置方式建议用exr格式&#xff08;由于导出的时候…

科目一过关技巧

口诀 3让6违——题目中看到“6分”选“违”字&#xff1b;看到“违”字选6分&#xff08;“违”法停车的违字除外&#xff0c;选9分&#xff09;&#xff1b;看到“让”就3分红高蓝低——红色圈圈最高&#xff0c;蓝色最低虚可实禁——车辆可以压虚线&#xff0c;不能压实线&a…

Windows11 配置Cuda cuDNN Pytorch环境

文章目录1 安装CudaNote 安装失败的情况2 安装cuDNN3 安装Anaconda4 安装Pytorch5 使用Pycharm进行验证6 结束1 安装Cuda 进入 developer cuda: https://developer.nvidia.com/ 之后自定义路径进行安装即可 必装CUDA&#xff0c;其他情况自己选择 自定义路径 Document与Deve…

Python表白比心

本文介绍运用Python中的turtle库控制函数画比心图。    文章目录一、效果展示二、代码详解1 导入库2 播放音乐3 画手4 定义画心的函数5 定义写名字的函数并实现动态画心一、效果展示 在介绍代码之前&#xff0c;先来看下本文的实现效果。 可以参考Pinstaller(Python打包为exe…

[附源码]java毕业设计网上手机商城的设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

JS,DOM试题2,在实践中应用,非常详细!!

列表收缩 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>ul,li{list-style: none;padding: 0;margin: 0;}ul{display: none;}h3{margin: 0;background: cornflowerblue;}div{text-indent: 20…

基于FFmpeg的Java视频Mp4转GIF初探

背景 在一些业务场景中&#xff0c;会有如下的一些要求&#xff1a;比如有用户需要将Mp4视频转为Gif动图。当然有一些小伙伴说可以使用系统截图&#xff0c;然后使用之前提到过的技术&#xff1a;GIF图像动态生成-JAVA后台生成。需要处理的素材比较少&#xff0c;就一两个视频&…

最全Python操作excel代码,让你每天早下班两小时

在数字化时代&#xff0c;很多人工作中经常和excel打交道。本文介绍Python操作excel的脚本&#xff0c;让你工作效率更高。    文章目录一、安装openpyxl模块二、加载库三、创建文件和工作表四、在工作表指定单元格写数据五、设置单元格的颜色字体六、在excel中写入表格一、安…

【数据结构初阶】C语言从0到1带你了解直接插入排序

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【数据结构初阶】 ✒️✒️本篇内容&#xff1a;深入剖析直接插入排序 &#x1f6a2;&#x1f6a2;作者简介&#xff1a;计算机海洋的新进船长一枚&#xf…

等保整改之开启Nacos认证-漏扫发现我们使用Nacos时存在未授权访问的漏洞

背景 还是之前的一个小项目&#xff0c;部署在专网中&#xff0c;等保在做了一次漏扫后&#xff0c;说是有个高危漏洞要求整改。打开漏洞扫描报告后&#xff0c;总体网络风险级别为&#xff1a;比较危险&#xff1a; nacos未授权访问漏洞 &#xff0c;漏洞详细信息如下&#x…

Linux基本用户操作

1.查看用户名 指令&#xff1a;whoami 在Linux下查看本用户下的用户名&#xff0c;可以在普通用户和root超级用户下操作&#xff0c;如下&#xff1a; 其实&#xff0c;查看用户名也可以不用指令就能查看&#xff1a; 箭头所指的就是用户名&#xff0c;root用户名就是root。 2.…

第2章 持久化初始数据到指定表

004 AuthorityScopeEnum、Role、Topic、TaskInfoDto、TasksQz AuthorityScopeEnum&#xff1a;该枚举定义了6种当前程序的访问权限&#xff0c;前程序通过该枚举实例选定其中(NONE(-1&#xff1a;无任何权限)/Custom(1&#xff1a;自定义权限)/MyDepart(2&#xff1a;本部门权…

Typescript:(一)基本使用

TypeScript 定义&#xff1a;Typescript是拥有类型的JavaScript超集 它可以编译成普通&#xff0c;干净&#xff0c;完整的JavaScript代码 我们可以将TypeScript理解成加强版的JavaScript。 JavaScript所拥有的特性&#xff0c;TypeScript全部都是支持的&#xff0c;并且它紧…