SpringBoot学习之路(X2)- JDBC数据访问及自动配置原理
SpringBoot学习之路(X2)- JDBC数据访问及自动配置原理
前言
对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合
Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。引入
各种xxxTemplate,xxxRepository来简化我们对数据访问层的操作。对我们来
说只需要进行简单的设置即可。我们将在数据访问章节测试使用SQL相关、
NOSQL在缓存、消息、检索等章节测试。
– JDBC
– MyBatis
– JPA
操作实例
1)、使用idea创建应用
选中JPA MySql及Web模块
可以看到pom.xml文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>5.1.25</scope>
</dependency>
这里的mysql我选用5.1.25版本
2)、连接数据库
1、创建yml文件(此次使用yml配置连接数据库)
spring:
datasource:
username: root
password: root
url: jdbc:mysql://192.168.2.17:3306/student01
driver-class-name: com.mysql.jdbc.Driver
3)、效果
默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源;
数据源的相关配置都在DataSourceProperties里面;
自动配置原理
org.springframework.boot.autoconfigure.jdbc:
- 参考DataSourceConfiguration,根据配置创建数据源,默认使用Tomcat连接池;可以使用spring.datasource.type指定自定义的数据源类型;
- SpringBoot默认可以支持;
org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource、
- 自定义数据源类型
/**
* Generic DataSource configuration.
*/
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type")
static class Generic {
@Bean
public DataSource dataSource(DataSourceProperties properties) {
//使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性
return properties.initializeDataSourceBuilder().build();
}
}
-
DataSourceInitializer:ApplicationListener;
作用:1)、runSchemaScripts();运行建表语句; 2)、runDataScripts();运行插入数据的sql语句;
默认只需要将文件命名为:
schema-*.sql、data-*.sql
默认规则:schema.sql,schema-all.sql;
可以使用
schema:
- classpath:department.sql
指定位置
- 操作数据库:自动配置了JdbcTemplate操作数据库