JDBC连接实例

  1. <!--引入JDBC和MySQL驱动的依赖-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-jdbc</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>mysql</groupId>
  8. <artifactId>mysql-connector-java</artifactId>
  9. <scope>runtime</scope>
  10. </dependency>
  1. ## 数据库相关配置
  2. spring:
  3. datasource:
  4. username: root
  5. password: 123456
  6. url: jdbc:mysql://127.0.0.1/test
  7. driver-class-name: com.mysql.jdbc.Driver
/**
* 数据库连接测试
**/
@SpringBootTest
class SpringbootApplicationTests {
    @Autowired
    public DataSource dataSource;

    @Test
    void contextLoads() throws SQLException {
        // 打印数据源类型
        System.out.println(dataSource.getClass());
        // 删除连接
        Connection connection = dataSource.getConnection();
        // 打印连接对象
        System.out.println(connection);
        // 打印数据库连接用户名
        System.out.println(connection.getMetaData().getUserName());
        // 关闭连接
        connection.close();
    }
}
/**
 * Controller层测试
 */
@Controller
public class HelloController {
    @Autowired
    public JdbcTemplate jdbcTemplate;

    @ResponseBody
    @GetMapping("helloData")
    public Map helloData(){
        Map<String, Object> map = jdbcTemplate.queryForMap("select * from user limit 1");
        return map;
    }
}

效果说明:

Spring Boot默认使用org.apache.tomcat.jdbc.pool.DataSource作为数据源,

数据源的相关配置注入都通过DataSourceProperties类实现。

自动配置原理

1、数据库连接驱动:org.springframework.boot.autoconfigure.jdbc
数据源配置类:`DataSourceConfiguration

,可以根据配置创建数据源并初始化数据源属性值。默认情况下使用tomcat的数据源,可用通过spring.datasource.type`来指定自定义的数据源。

2、SpringBoot默认支持org.apache.tomcat.jdbc.pool.DataSource
com.zaxxer.hikari.HikariDataSourceorg.apache.commons.dbcp.BasicDataSource三种数据源,默认使用org.apache.tomcat.jdbc.pool.DataSource数据源,我们可以引入其他数据源。

3、自定义数据源类型

/**
 * 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();
       }
}

4、DataSourceInitializerApplicationListener
作用:
1、runSchemaScripts():运行建表语句
2、runDataScripts():运行插入数据的sql语句

5、操作数据库,自动配置了JdbcTemplate来操作数据库。