JDBC连接实例
<!--引入JDBC和MySQL驱动的依赖--><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>
## 数据库相关配置spring:datasource:username: rootpassword: 123456url: jdbc:mysql://127.0.0.1/testdriver-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.HikariDataSource、org.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、DataSourceInitializer和ApplicationListener
作用:
1、runSchemaScripts():运行建表语句
2、runDataScripts():运行插入数据的sql语句
5、操作数据库,自动配置了JdbcTemplate来操作数据库。
