SpringBoot与数据访问概述:

对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合Spring Data的方式进行统一处理,

添加大量自动配置,屏蔽了很多设置。引入各种xxxTemplate,xxxRepository来简化我们对数据访问层的操作。

对我们来说只需要进行简单的设置即可。

我们将在数据访问章节测试使用SQL相关、NOSQL在缓存、消息、检索等章节测试。

– JDBC

– MyBatis

– JPA

另外非关系型数据库也是支持的,例如Redis

SpringBoot整合JDBC

创建一个SpringBoot工程

这样命名

然后点选预先整合一些依赖组件

- Lombok简化工具

- Jdbc API

- MySQL Driver

- Spring Web

然后再POM配置中就可以查看到,就是这些依赖坐标

坐标:

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

然后开始连接数据库【不是虚拟机或者服务主机的Linux,本地的数据库也可以】

SpringBoot已经接管了一切,所以我们不需要再自己手动编写任何文件

一切都在已有的配置中执行的

可以选择properties配置,也可以是yaml配置

这里写的是一个yaml配置,后缀名yml是yaml的缩写版

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///mysql?serverTimezone=Asia/Shanghai
username: root
password: 123456

properties配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///mysql?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456

位置:

另外,建议连接到在Linux上的数据库连接再附带一些参数

jdbc:mysql:///mysql?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8

再测试类中自动装配数据源对象【连接池】

    @Autowired
DataSource dataSource; @Test
void contextLoads() throws SQLException { System.out.println(dataSource.getClass()); Connection connection = dataSource.getConnection(); System.out.println(connection); connection.close();
}

测试结果

class com.zaxxer.hikari.HikariDataSource
2020-05-31 19:10:39.673 INFO 9500 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2020-05-31 19:10:41.200 INFO 9500 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
HikariProxyConnection@1964117592 wrapping com.mysql.cj.jdbc.ConnectionImpl@48976e6d 2020-05-31 19:10:41.235 INFO 9500 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2020-05-31 19:10:41.239 INFO 9500 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2020-05-31 19:10:41.241 INFO 9500 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' Process finished with exit code 0

所以SpringBoot默认的数据源是Hikari连接池

如果是使用老版本的5.0+MySQL,则用的是tomcat提供的一个数据源

关于数据源的相关配置都在DataSourceProperties里面:

所在的依赖组件包是这个

org.springframework.boot:spring-boot-autoconfigure

然后下级目录位于:

jdbc.*

在这个数据源配置抽象类DataSourceConfiguration中找到了我们使用的数据源

行号68开始

    @Configuration(
proxyBeanMethods = false
)
@ConditionalOnClass({HikariDataSource.class})
@ConditionalOnMissingBean({DataSource.class})
@ConditionalOnProperty(
name = {"spring.datasource.type"},
havingValue = "com.zaxxer.hikari.HikariDataSource",
matchIfMissing = true
)
static class Hikari {
Hikari() {
} @Bean
@ConfigurationProperties(
prefix = "spring.datasource.hikari"
)
HikariDataSource dataSource(DataSourceProperties properties) {
HikariDataSource dataSource = (HikariDataSource)DataSourceConfiguration.createDataSource(properties, HikariDataSource.class);
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
} return dataSource;
}
}

默认是分了这四种

SpringBoot按照你的配置来创建数据源实例,如果你不配置,

SpringBoot会根据数据库的驱动默认给你这里面的一个

这个配置使用这个属性完成:

spring.datasource.type

另外也可以配置自定义类型的数据源

【就是我们第一个看到的Generic,泛型连接池】

    @Configuration(
proxyBeanMethods = false
)
@ConditionalOnMissingBean({DataSource.class})
@ConditionalOnProperty(
name = {"spring.datasource.type"}
)
static class Generic {
Generic() {
} @Bean
DataSource dataSource(DataSourceProperties properties) {
// 使用的是这个DataSourceBuilder创建连接池实例
return properties.initializeDataSourceBuilder().build();
}
}

这是Build方法的过程

操作原生JDBC可以自己操作

也可以使用Spring提供的JdbcTemplate模版实例操作

【SpringBoot】13 数据访问P1 整合Jdbc的更多相关文章

  1. java框架之SpringBoot(9)-数据访问及整合MyBatis

    简介 对于数据访问层,无论是 SQL 还是 NOSQL,SpringBoot 默认采用整合 SpringData 的方式进行统一处理,添加了大量的自动配置,引入了各种 Template.Reposit ...

  2. 六、SpringBoot与数据访问

    六.SpringBoot与数据访问 1.JDBC spring: datasource: username: root password: 123456 url: jdbc:mysql://192.1 ...

  3. SpringBoot数据访问之整合mybatis注解版

    SpringBoot数据访问之整合mybatis注解版 mybatis注解版: 贴心链接:Github 在网页下方,找到快速开始文档 上述链接方便读者查找. 通过快速开始文档,搭建环境: 创建数据库: ...

  4. SpringBoot之数据访问和事务-专题三

    SpringBoot之数据访问和事务-专题三 四.数据访问 4.1.springboot整合使用JdbcTemplate 4.1.1 pom文件引入 <parent> <groupI ...

  5. 20、Springboot 与数据访问(JDBC/自动配置)

    简介: 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入 各种xxxTemplate,x ...

  6. 10分钟进阶SpringBoot - 05. 数据访问之JDBC(附加源码分析+代码下载)

    10分钟进阶SpringBoot - 05. 数据访问之JDBC 代码下载:https://github.com/Jackson0714/study-spring-boot.git 一.JDBC是什么 ...

  7. SpringBoot(九) -- SpringBoot与数据访问

    一.简介 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种xxxTemplate,xx ...

  8. SpringBoot 之数据访问

    1. Spring Boot 与 JDBC 默认使用 org.apache.tomcat.jdbc.pool.DataSource 数据源; // application.yml spring: da ...

  9. Spring Boot数据访问之整合Mybatis

    在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...

  10. SpringBoot数据访问之整合Mybatis配置文件

    环境搭建以及前置知识回顾 SpringBoot中有两种start的形式: 官方:spring-boot-starter-* 第三方:*-spring-boot-starter Mybatis属于第三方 ...

随机推荐

  1. map和解构赋值的拷贝

    map遍历之后返回的数组是深拷贝,解构赋值一维的是深拷贝,二维是浅拷贝

  2. vant做城市列表

    vant: https://youzan.github.io/vant/#/zh-CN/ 安装 cnpm i -S vant 按需加载配置 # 在 babel.config.js 中配置 module ...

  3. 程序员面试金典-面试题 02.02. 返回倒数第 k 个节点

    题目: 实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值. 注意:本题相对原题稍作改动 示例: 输入: 1->2->3->4->5 和 k = 2输出: 4说明: ...

  4. Vue第三方库与插件实战手册

    title: Vue第三方库与插件实战手册 date: 2024/6/8 updated: 2024/6/8 excerpt: 这篇文章介绍了如何在Vue框架中实现数据的高效验证与处理,以及如何集成E ...

  5. 刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动

    刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动 解决方法: 进游戏前,在游戏设置中,选择"后台渲染",然后再进游戏.

  6. 恢复Everything的默认排序

    在窗口里点了文件名/时间排序后,想恢复默认排序: 点击菜单 ,视图-排序-最近打开时间.

  7. netcore 打包dll发布到nuget服务器

    可参考微软官网:NuGet.org 概述 | Microsoft Docs 一.创建类库 首先创建一个类库,就是你想要发布到nuget的类库,生成项目 二.下载并注册nuget nuget地址:htt ...

  8. MYSQL-check管理

    mysql这个东西对于管理员并不友好,看起来还没有成品.就拿亲儿子workbeanch来说吧,功能也不是很齐全,速度也一般般,否则sqlyog之类的早没有什么活路了. 社区版的支持非常薄弱(商业版不太 ...

  9. FPGA对EEPROM驱动控制(I2C协议)

    本文摘要:本文首先对I2C协议的通信模式和AT24C16-EEPROM芯片时序控制进行分析和理解,设计了一个i2c通信方案.人为按下写操作按键后,FPGA(Altera EP4CE10)对EEPROM ...

  10. Android 通过odex优化提高首次开机速度

    背景 客户反馈说开机时间过长,需要优化. 原文:https://blog.csdn.net/croop520/article/details/73930184 介绍 现在很多Android都需要预装很 ...