1.使用传统JDBC
使用步骤:
6
大步骤!
1.
注册数据库驱动
导入数据库驱动的依赖
新版数据库驱动可以自动注册,可以忽略这步
Class.forName(驱动类名
)
2.
连接到数据库
需要
3
个参数
url username password
3.
创建
Statement
(语句)对象
4.
执行
SQL
语句(
CRUD
)
5.
处理
SQL
语句的结果
6.
关闭数据库连接
Java 7 以后可以利用
, try catch
的自动关闭功能,自动关闭连接
示例代码如下:
public class StudentDaoJdbcImpl implements StudentDao {
@Autowired
DataSource dataSource;
@Override
public int saveStudent(Student student) {
//2. 创建连接
try (Connection connection = dataSource.getConnection()){
//1. 注册数据库驱动, 自动完成
Class.forName("com.mysql.jdbc.Driver");
String sql = "INSERT INTO student (id, name, birth_date) VALUE (null, ?, ?)";
//3. 创建 Statement对象
PreparedStatement preparedStatement = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, student.getName());
preparedStatement.setDate(2, Date.valueOf(student.getBirthDate()));
//4. 执行SQL语句
int n = preparedStatement.executeUpdate();
//5 处理SQL结果
//获取自动生成的ID
ResultSet resultSet = preparedStatement.getGeneratedKeys();
while (resultSet.next()){
//为Student 设置刚刚生成的ID
student.setId(resultSet.getInt(1));
}
return n;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
//6. 关闭数据库连接, 采用Java 7的自动关闭功能
}
2.传统JDBC的不足:
1.代码中的冗余重复
2.代码繁琐易错
3.每次都要处理异常
3.什么是Spring JDBC
Spring JDBC 是对
JDBC
的轻量封装,解决了传统
JDBC
冗余,易错,以及异常处理的问题。
采用模板设计模式,将
JDBC
通用代码进行封装, 提供一个简洁使用方式:
JdbcTemplate
4.Spring JDBC什么时候用
Spring JDBC 是
Spring
提供的持久层解决方案, 轻量化封装,简化了
JDBC
的操作,又提供非常优秀的性
能,适用于小的轻量级的项目
5.比较MyBatis 和 Spring JDBC:
MyBatis -- 大部分项目都用
MyBatis
MyBatis
是重量级的框架(相对于
Spring JDBC
),内部用到了反射和动态代理,执行效率没
有
Spring JDBC
快
MyBatis封装更加彻底,几乎
“
零
JDBC”
编码,用起来非常方便Spring JDBC -- 适用于小的轻量级的项目是轻量级的框架,实际上就是对传统JDBC的简单封装,提供了对异常的处理,执行效率和传统JDBC
一样,非常轻快
Nacos底层使用了
Spring JDBC
6.使用Spring JDBC的步骤:
1.
在
Spring Boot
项目中导入相关依赖
<!-- mysql驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- spring-jdbc依赖 -->
<dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2.
在属性
application.yml
文件配置数据源信息
spring:
datasource:
url: jdbc:mysql://localhost:3306/spring_test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
username: root
password: root
关于spring-boot-starter-jdbc自动配置
如果依赖了spring-boot-starter-jdbc
和
JDBC
驱动,
Spring Boot
就会自动创建数据库连接池
HikariDataSource添加依赖spring-boot-starter-jdbc
后,必须在应用属性文件
application.yml
中配置
datasource
参数,如果没有datasource
配置,则启动出现异常!如果配置了自定义的DataSource
类型的
Bean
对象,则
Spring Boot
就不再创建
HikariDataSource
对象,这样就实现了自定义
DataSource
配置
JdbcTemplate的使用
导入spring-boot-starter-jdbc
依赖后,
Spring Boot
会自动创建
jdbcTemplate Bean
,使用时候注入即可:
测试从
JdbcTemplate
中获取连接对象,看是否获取成功,若能获取成功连接对象,则该模板类可以使用
模板类 -- JdbcTemplate
JdbcTemplate
的优势:
消除重复的模板代码减轻引起错误的常见原因
正确处理
SQLExceptions
在不牺牲性能的情况下
提供对标准
JDBC
结构的完全访问
JdbcTemplate
封装的操作有哪些?
1.
获取连接
2.
执行
SQL
3.
参与事务
4.
处理结果集
5.
处理异常
6.
释放连接
总之:程序员只需要调用该类中的方法即可完成相对应的操作,不用再写模板代码,不用考虑模板代码中的异常处理,操作方便了很多。