写在前面:
继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用!
3.4 数据层解决方案
3.4.1 使用项目
新建空项目,加入数据库驱动,改为Web项目,如图![![[Pasted image 20220803110135.png]]](https://img-blog.csdnimg.cn/2f8adeca27f04a43972d5a474eec356a.png)
3.4.2 SQL
3.4.2.1 数据源配置
- SpringBoot提供了3种内嵌的数据源对象供开发者选择,如
- HiKariCp(默认)
- Tomcat提供DataSource:上个不可用且在Web环境中会使用
- Commons DBCP:前两者均不可用
- 通用配置无法设置具体的数据源配置信息,仅提供基本的连接相关配置,可在下一级中进行配置,如图
![![[Pasted image 20220803110042.png]]](https://img-blog.csdnimg.cn/451b003f76f54c91acbe2691a21fb5e8.png)
3.4.2.2 内置持久化解决方案-JdbcTemplate
- pom文件添加依赖,如图
![![[Pasted image 20220802182110.png]]](https://img-blog.csdnimg.cn/d30b0c805b294cc796ac0509fd4300ba.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]]](https://img-blog.csdnimg.cn/b7ec1c092ec547f08134ef0a53f18152.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]]](https://img-blog.csdnimg.cn/9fb0f7368ab94a1ebecada9155defc63.png)
- 创建表,如图
![![[Pasted image 20220803113557.png]]](https://img-blog.csdnimg.cn/3daf38307e2947f8ad7cf63bb0181486.png)
,创建成功后可看到新建表,如图![![[Pasted image 20220803113626.png]]](https://img-blog.csdnimg.cn/0eb9de4cbbec4635a0bcfb90ab1acc1e.png)
- 添加表数据,如图
![![[Pasted image 20220803114047.png]]](https://img-blog.csdnimg.cn/03c585a6382a47269d7f5e60ffa78581.png)
- 查询操作,使用jdbc查询语句后可发现操作成功,如图
![![[Pasted image 20220803114508.png]]](https://img-blog.csdnimg.cn/47a29c671cdd4d6a84fea624a2acbac5.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]]](https://img-blog.csdnimg.cn/d12ebbaadfbf4a48bacef5646ccaafa4.png)
,可在pom看到Redis相应坐标,如图![![[Pasted image 20220829142557.png]]](https://img-blog.csdnimg.cn/c14f4c75ead9432691e1a3a18ba0038a.png)
- 配置,在yml中添加端口地址等信息,如下:
spring:
redis:
# 默认配置
port: 6379
host: localhost
- 操作,使用的是RedisTemplate,以对象作为key和value,内部对数据进行序列化,主要有Set,HashSet等数据类型接口,如图
![![[Pasted image 20220829142850.png]]](https://img-blog.csdnimg.cn/6ec52d483aa94b5e9f4114873dc3a6e7.png)
,简单使用如图![![[Pasted image 20220829143025.png]]](https://img-blog.csdnimg.cn/fe8c310facce4f2483c0d7047055da0b.png)
注:客户端使用的StringRedisTemplate,以字符串作为key和value,必须使用它才能在客户端进行统一交互查询操作。
3.4.3.2.3 Jedis和Lettcue
- Jedis和Lettcue均是Redis在SpringBoot中来操作Redis客户端的技术
- 默认是Lettcue技术,切换则需要添加坐标及更改使用,如图
![![[Pasted image 20220829150203.png]]](https://img-blog.csdnimg.cn/b621b2bd21ef43b3bc346aa534fea222.png)
![![[Pasted image 20220829150254.png]]](https://img-blog.csdnimg.cn/318f6326873549609977b6e53589db02.png)
- 两者区别:
- jedis :连接服务器是直连,当多线程模式下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个连接专用,这样整体性能就大受影响。
- Lettcue基于Netty框架进行Redis服务器连接,底层设计中采用StatefulRedisConnection。StatefulRedisConnection自身线程是安全的,可以保障并发访问安全问题,所以一个连接可以被多线程复用,也支持多连接实例一起工作。











![[附源码]java毕业设计网上手机商城的设计与实现](https://img-blog.csdnimg.cn/3ef66c758cf34924ab11c355c06c24a9.png)







