简介
Spring Boot ⽀支持了了主流的 ORM 框架:MyBatis、Hibernate 和 Spring JDBC,⼏几种 ORM 在不不同的场
景下各有优势,在 Spring Boot 体系内都有对应的 Starter 包以⽅方便便集成。
Spring Boot 使⽤用 JDBC 操作数据库
JDBC(Java Data Base Connectivity,Java 数据库连接)是⼀一种⽤用于执⾏行行 SQL 语句句的 Java API,可以为多
种关系数据库提供统⼀一访问,它由⼀一组⽤用 Java 语⾔言编写的类和接⼝口组成。JDBC 提供了了⼀一种基准,据此可以
构建更更⾼高级的⼯工具和接⼝口,使数据库开发⼈人员能够编写数据库应⽤用程序
Java 程序中使⽤用 JDBC, 需要如下7步操作:
- 加载数据库驱动
- 建⽴立数据库连接
- 创建数据库操作对象
- 定义操作的 SQL 语句句
- 执⾏行行数据库操作
- 获取并操作结果集
- 关闭对象,回收资源
代码如下:
try {
// 1、加载数据库驱动
Class.forName(driver);
// 2、获取数据库连接
conn = DriverManager.getConnection(url, username, password);
// 3、获取数据库操作对象
stmt = conn.createStatement();
// 4、定义操作的 SQL 语句句
String sql = "select * from user where id = 6";
// 5、执⾏行行数据库操作
rs = stmt.executeQuery(sql);
// 6、获取并操作结果集
while (rs.next()) {
// 解析结果集
}
} catch (Exception e) {
// ⽇日志信息
} finally {
// 7、关闭资源
}
Spring Boot 针对 JDBC 的使⽤用提供了了对应的 Starter 包:spring-boot-starter-jdbc。
spring-boot-starter-jdbc 直接依赖于 HikariCP 和 spring-jdbc。
HikariCP 是 Spring Boot 2.0 默认使⽤用的数据库连接池,也是传说中最快的数据库连接池。
spring-jdbc 是 Spring 封装对 JDBC 操作的工具包.
单数据源配置:
spring.datasource.url=jdbc:mysql://localhost:3306/learn
de=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
多数据源配置:
spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/learn?serverTimezon
e=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.primary.username=root
spring.datasource.primary.password=123456
spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/learn1?serverTimez
one=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.secondary.username=root
spring.datasource.secondary.password=123456
spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver
这里使用的是 spring.datasource.*.jdbc-url,因为默认连接池 HikariCP 读取的是 jdbc-url。
在项⽬目启动的时候读取配置⽂文件中的信息,并对 JDBC 初始化。
// 在启动的时候根据特定的前缀加载不同的数据源,根据构建好的数据源再创建不同的JDBC。
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix="spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name="primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate (
@Qualifier("primaryDataSource") DataSource dataSource ) {
return new JdbcTemplate(dataSource);
}
@Bean(name="secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(
@Qualifier("secondaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}