【spring boot2】第7篇:spring boot 整合 jdbc 数据源

简述

以jdbc的形式访问mysql数据库是比较基础的知识,理解spring boot中如何使用jdbc对我们理解spring boot对mybatis等数据框架是很有意义的。

spring boot 整合 jdbc 的步骤

引入 starts 启动器


    
        org.springframework.boot
        spring-boot-starter-jdbc
    
    
        mysql
        mysql-connector-java
        runtime
        

配置 application.yaml 文件

配置数据库相关信息

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://127.0.0.1:3306/sff_test
    driver-class-name: com.mysql.jdbc.Driver

这些配置信息都封装在org.springframework.boot.autoconfigure.jdbc.DataSourceProperties类中

运行测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootJdbcApplicationTests {
    @Autowired
    private DataSource dataSource;
    @Test
    public void testDataSource() throws SQLException {

        System.out.println("dataSource类型:" + dataSource.getClass());

        Connection connection = dataSource.getConnection();
        System.out.println("connection连接:" + connection);
        connection.close();
    }
}

运行结果:
【spring boot2】第7篇:spring boot 整合 jdbc 数据源_第1张图片
从结果中可以看到 spring boot 的 2.1.2.RELEASE 版本默认使用com.zaxxer.hikari.HikariDataSource 作为数据源。

spring boot 数据源自动配置原理

spring boot 对 jdbc 的自动配置类都封装在org.springframework.boot.autoconfigure.jdbc包下。

DataSourceConfiguration

  • 该配置类中定义了spring boot支持的默认数据源种类

    • org.apache.tomcat.jdbc.pool.DataSource
    • com.zaxxer.hikari.HikariDataSource
    • org.apache.commons.dbcp2.BasicDataSource
    • 通过spring.datasource.type属性指定自定义数据源类型,比如druid、 c3p0等

JdbcTemplate

spring boot 自动配置了 JdbcTemplate 数据操作模板。JdbcTemplate 是 spring 中提供对数据增删改查操的封装模板,可以理解成一个工具类,也就相当于你自己实现一个JdbcUtils工具类一样。
spring boot 中如何使用 JdbcTemplate 呢?直接注入就可以可以使用了。

@Controller
public class JdbcController {

    @Autowired
    private JdbcTemplate jdbcTemplate; //注入 JdbcTemplate 模板

    @ResponseBody
    @RequestMapping("/jdbc")
    public String query() {
        List> deptList = jdbcTemplate.queryForList("SELECT id,dept_name FROM dept");
        return deptList.toString();
    }
}

使用自定义的数据源 Druid

  • 导入依赖


    com.alibaba
    druid
    1.1.12


   com.alibaba
   druid-spring-boot-starter
   1.1.10
  • 修改 yaml 文件配置
spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://127.0.0.1:3306/sff_test
    driver-class-name: com.mysql.jdbc.Driver
    # 指定自己使用的数据源
    type: com.alibaba.druid.pool.DruidDataSource

    # DruidDataSource 其他属性配置
    druid:
     initialSize: 5
     minIdle: 5
     maxActive: 20
     maxWait: 60000
     timeBetweenEvictionRunsMillis: 60000
     minEvictableIdleTimeMillis: 300000
     validationQuery: SELECT 1 FROM DUAL
     testWhileIdle: true
     testOnBorrow: false
     testOnReturn: false
     poolPreparedStatements: true
     maxPoolPreparedStatementPerConnectionSize: 20
     useGlobalDataSourceStat: true
     filter:
      stat:
       enabled: true
       log-slow-sql: true
      wall:
       enabled: true

  • 新增druid的配置类
@Configurable
public class DruidConfig {
    
    @Bean
    @ConfigurationProperties("spring.datasource.druid")
    public DataSource dataSourceTwo(){
        return DruidDataSourceBuilder.create().build();
    }
}

然后我们再debug运行 SpringBootJdbcApplicationTests 的 testDataSource 方法发现此时DruidDataSource其他属性有起作用,比如:initialSize等。,如下图展示:
【spring boot2】第7篇:spring boot 整合 jdbc 数据源_第2张图片

  • 详细配置参考druid官方文档

你可能感兴趣的:(【spring boot2】第7篇:spring boot 整合 jdbc 数据源)