简介:

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提供了三个模板类供选择:

  1. JdbcTemplate: 最基本的SpringJDBC模板,这个模板支持最简单的JDBC数据库访问功能以及基于索引参数的查询。

  2. NamedParameterJdbcTemplate: 使用该模板类执行查询时可以将值以命名参数的形式绑定到SQL中,而不是使用简单的索引参数。

  3. SimpleJdbcTemplate: 该模板类利用Java5的一些特性来简化JDBC模板的使用。

    从Spring3.1开始,SimpleJdbcTemplate已经被废弃了,特性被转入到JdbcTemplate中,NamedParameterJdbcTemplate只有在需要使用到命名参数的时候才需要使用到这个模板类,对于绝大多数的JDBC操作来讲,JdbcTemplate 就是最好的选择。

JDBCTemplate:

JdbcTemplate主要提供以下五类方法:

  1. execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  2. update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
  3. query方法及queryForXXX方法:用于执行查询相关语句;
  4. call方法:用于执行存储过程、函数相关语句。
  5. batchUpdate方法:用于执行批处理相关语句;

注意:

这个项目好像被废弃了,Spring官网好像也没有提供文档。