Spring Boot - 使用Spring Data JDBC
简介:
Spring Data JDBC Extensions是Spring Data项目的一部分。Spring Framework中的JDBC支持非常广泛,涵盖了最常用的功能。此扩展项目为使用高级Oracle数据库功能提供了额外的支持。
配置:
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>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
application.yml
:
spring:
datasource:
platform: mysql
name: world_x
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/world_x?useUnicode=true&characterEncoding=utf-8&useSSL=false
password: root
username: root
数据源配置:
springdata-jdbc默认是用org.apache.tomcat.jdbc.pool.DataSource
作为数据源;
数据源的相关配置都在DataSourceConfiguration
里面:
org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration
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();
}
}
自动配置原理:
源码路径:`org.springframework.boot.autoconfigure.jdbc;
源码片段:
package org.springframework.boot.autoconfigure.jdbc;
@Configuration
@ConditionalOnClass({ DataSource.class, JdbcTemplate.class })
@ConditionalOnSingleCandidate(DataSource.class)
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
public class JdbcTemplateAutoConfiguration {
private final DataSource dataSource;
public JdbcTemplateAutoConfiguration(DataSource dataSource) {
this.dataSource = dataSource;
}
@Bean
@Primary
@ConditionalOnMissingBean(JdbcOperations.class)
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(this.dataSource);
}
@Bean
@Primary
@ConditionalOnMissingBean(NamedParameterJdbcOperations.class)
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(this.dataSource);
}
}
JdbcTemplateAutoConfiguration
使用@AutoConfigureAfter
注解导入DataSourceAutoConfiguration
。
开发:
JDBC模板:
Spring的JDBC框架承担了资源管理和异常处理的工作,从而简化了JDBC的代码,让我们只需要遍写从数据库读写数据的必须代码。Spring为JDBC提供了三个模板类供选择:
JdbcTemplate: 最基本的SpringJDBC模板,这个模板支持最简单的JDBC数据库访问功能以及基于索引参数的查询。
NamedParameterJdbcTemplate: 使用该模板类执行查询时可以将值以命名参数的形式绑定到SQL中,而不是使用简单的索引参数。
SimpleJdbcTemplate: 该模板类利用Java5的一些特性来简化JDBC模板的使用。
从Spring3.1开始,
SimpleJdbcTemplate
已经被废弃了,特性被转入到JdbcTemplate
中,NamedParameterJdbcTemplate
只有在需要使用到命名参数的时候才需要使用到这个模板类,对于绝大多数的JDBC操作来讲,JdbcTemplate
就是最好的选择。
JDBCTemplate:
JdbcTemplate主要提供以下五类方法:
- execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
- update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
- query方法及queryForXXX方法:用于执行查询相关语句;
- call方法:用于执行存储过程、函数相关语句。
- batchUpdate方法:用于执行批处理相关语句;
注意:
这个项目好像被废弃了,Spring官网好像也没有提供文档。