【SpringBoot】13 数据访问P1 整合Jdbc
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的更多相关文章
- java框架之SpringBoot(9)-数据访问及整合MyBatis
简介 对于数据访问层,无论是 SQL 还是 NOSQL,SpringBoot 默认采用整合 SpringData 的方式进行统一处理,添加了大量的自动配置,引入了各种 Template.Reposit ...
- 六、SpringBoot与数据访问
六.SpringBoot与数据访问 1.JDBC spring: datasource: username: root password: 123456 url: jdbc:mysql://192.1 ...
- SpringBoot数据访问之整合mybatis注解版
SpringBoot数据访问之整合mybatis注解版 mybatis注解版: 贴心链接:Github 在网页下方,找到快速开始文档 上述链接方便读者查找. 通过快速开始文档,搭建环境: 创建数据库: ...
- SpringBoot之数据访问和事务-专题三
SpringBoot之数据访问和事务-专题三 四.数据访问 4.1.springboot整合使用JdbcTemplate 4.1.1 pom文件引入 <parent> <groupI ...
- 20、Springboot 与数据访问(JDBC/自动配置)
简介: 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入 各种xxxTemplate,x ...
- 10分钟进阶SpringBoot - 05. 数据访问之JDBC(附加源码分析+代码下载)
10分钟进阶SpringBoot - 05. 数据访问之JDBC 代码下载:https://github.com/Jackson0714/study-spring-boot.git 一.JDBC是什么 ...
- SpringBoot(九) -- SpringBoot与数据访问
一.简介 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种xxxTemplate,xx ...
- SpringBoot 之数据访问
1. Spring Boot 与 JDBC 默认使用 org.apache.tomcat.jdbc.pool.DataSource 数据源; // application.yml spring: da ...
- Spring Boot数据访问之整合Mybatis
在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...
- SpringBoot数据访问之整合Mybatis配置文件
环境搭建以及前置知识回顾 SpringBoot中有两种start的形式: 官方:spring-boot-starter-* 第三方:*-spring-boot-starter Mybatis属于第三方 ...
随机推荐
- 通过Webpack搭建react
安装解析react的相关babel和插件 nmp i -D babel-loader @babel/core @babel/preset-react @babel/preset-env 进行loade ...
- vue-cli 单文件组件 工具安装
https://cli.vuejs.org/zh/ 在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) ...
- vue指令 常用指令 v-cloak指令
指令(Directives)就是vue给html标签提供的一些自定义属性,这样属性都是带有 v- 前缀的特殊属性.指令特性的值预期是单个JS表达式(v-for是例外情况).指令的职责是,当表达式的值改 ...
- ETL工具-nifi干货系列 第十八讲 nifi Funnel实战教程
1.Funnel (漏斗),Funnel是 NiFi 组件,用于将多个连接中的数据合并到一个连接中. 使用场景:nifi中的Funnel组件用于合并多个数据流并将它们传递到下游处理器.它可以将来自不同 ...
- C#.NET BC BouncyCastle 国密 SM2 解密遇到 Invalid point encoding 77
C#.NET BC BouncyCastle 国密 SM2 解密遇到 Invalid point encoding 77 参考:https://blog.csdn.net/seeyouagen/art ...
- http请求方式GET,POST工具类RestTemplate
http请求方式GET,POST工具类RestTemplate import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serial ...
- hbase的优缺点
一. 一个关于hbase介绍全面的博客地址 https://www.csdn.net/gather_22/MtTaEgysNjYwOS1ibG9n.html 优点: 1,方便高效的压缩数据. 2,支持 ...
- scrapy爬取知名问答网站
scrapy爬取知名问答网站 分析及数据表设计 itemloader方式提取question spider爬虫逻辑的实现以及answer的提取 保存数据到mysql中
- golang如何使用指针灵活操作内存?unsafe包原理解析
Hi 你好,我是k哥.一个大厂工作6年,还在继续搬砖的后端程序员. 我们都知道,C/C++提供了强大的万能指针void*,任何类型的指针都可以和万能指针相互转换.并且指针还可以进行加减等算数操作.那么 ...
- Linux 内核:sysfs 有关的API
背景 相关文章:1.sysfs与kobject基类 下面内容基本上参考(有删改):https://blog.csdn.net/qb_2008/article/details/6846412 API a ...