JDBC
首先导入新建spring initializer项目
导入mysql、springboot自带的JDBC、web的依赖
<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>
使用yml的配置文件,配置数据库。我这里使用的是Docker中的数据库
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://192.168.197.128:3310/jdbc
driver-class-name: com.mysql.jdbc.Driver
注意:在springboot2.x版本中的 driver-class-name中的com.mysql.jdbc.Driver已经改成com.mysql.cj.jdbc.Driver
我最开始使用的springboot版本是2.3.3,后来程序运行不出来,就把springboot的版本改成1.5.9了。
效果:
默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源;
而2.x版本默认是class com.zaxxer.hikari.HikariDataSource
数据源的相关配置都在DataSourceProperties里面;
自动配置原理:org.springframework.boot.autoconfigure.jdbc:
1、参考DataSourceConfiguration,根据配置创建数据源,默认使用Tomcat连接池;
可以使用 spring.datasource.type指定自定义的数据源类型;
2、SpringBoot默认可以支持;
org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource、
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语句;
默认只需要将文件命名为:
schema‐*.sql、data‐*.sql
默认规则:schema.sql,schema‐all.sql;
可以使用 schema:
‐ classpath:department.sql
指定位置
department.sql里面内容是建表语句。
运行程序后会出现表
5、操作数据库:自动配置了JdbcTemplate操作数据库
定义一个controller,实现查询功能
@Controller
public class HelloController {
//查数据
@Autowired
JdbcTemplate jdbcTemplate;
@ResponseBody
@GetMapping("/query")
public Map<String,Object> map(){
List<Map<String, Object>> maps = jdbcTemplate.queryForList("select * from department");
return maps.get(0);
}
}
运行程序,注意:每次运行程序后,都会新建一张表,我们在表中插入数据来测试