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


    写在前面
    继续记录自己的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 #查询超时时间
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 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);  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 操作,使用的是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自身线程是安全的,可以保障并发访问安全问题,所以一个连接可以被多线程复用,也支持多连接实例一起工作。
  • 相关阅读:
    docker从零部署jenkins保姆级教程(下)
    离线安装腾讯x5内核(附安装包下载地址)
    算法基础-数学知识-高斯消元、求组合数
    ReentrantReadWriteLock 读写锁的使⽤
    vue 封装一个Dialog组件
    es之null_value
    软件开发人员的三条职业路径
    elasticsearch 7.X全部版本的新特性与重大变化
    机器人冗余自由度优化过程中的零空间概念
    css 写带三角形的对话框,空心的三角形边框
  • 原文地址:https://blog.csdn.net/qq_40903378/article/details/127950430