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: root
password: 123456
url: jdbc:mysql://127.0.0.1/test
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.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来操作数据库。