Lazy loaded image
技术分享
JDBC
00 min
2020-7-18
2024-11-25
type
status
date
slug
summary
tags
category
icon
password

1. 什么是 JDBC(Java Database Connectivity)?

Java数据库连接,用于执行SQL语句的javaAPI,可方便实现多种数据库的统一操作

2. JDBC 操作数据库的基本步骤

  1. 加载数据库驱动
  1. 获取数据库连接
  1. 创建执行 SQL 语句的对象
  1. 执行 SQL 语句得到结果
  1. 关闭数据库连接

3. 批处理

4. 事务

事务的 ACID 属性:
  • 原子性(Atomicity):要么全部执行,要不全部不执行
  • 一致性(Consistency):执行结果必须使数据库从一个状态转变到另一个状态
  • 隔离性(Isolation):不同的事务并发操纵相同的数据时, 各事务互不干扰
  • 持久性(Durability):一个事务成功执行,数据库数据对应的改变是永久性的
数据库 4 种隔离级别:
  • READ_UNCOMMITTED:什么都不解决
  • READ_COMMITTED:解决脏读
  • REPEATABLE_READ(MySQL默认):解决脏读、不可重复读
  • SERIALIZABLE:解决脏读、不可重复读、幻读
脏读:一个事务读取到另外一个事务修改后未提交的数据 不可重复读:一个事务多次读取同一数据却返回不同的结果(原数据被另一个事务update了) 幻读:一个事务多次相同的sql查询返回不同的记录(原表被另一个事务insert了新的行)

5. 元数据

元数据,本质是定义数据的数据,可以描述数据库、表、列的定义信息
  • DataBaseMetaData:数据库元数据
  • ParameterMetaData:参数元数据
  • ResultSetMetaData:结果集元数据

6. 简化 JDBC

增、删、改

7. 数据库连接池

  • DBCP:tomcat 自带,有BUG,淘汰
  • C3P0:速度慢,稳定性好,开源
  • Druid:最常用,阿里提供
使用 druid 连接池创建数据库连接

8. DbUtils 框架(commons-dbutils-xxx.jar)

dbutils 是对 JDBC 简单的封装,极大简化 jdbc 编码的工作量
QueryRunner类 该类简化了SQL查询,配合ResultSetHandler使用,可以完成大部分的数据库操作,重载了许多的查询,更新,批处理方法。大大减少了代码量
ResultSetHandler接口 该接口规范了对ResultSet的操作,要对结果集进行什么操作,传入ResultSetHandler接口的实现类即可。
使用 DbUtils 的 CRUD 操作

9. 使用 JDBC 实现分页

Mysql 分页语法
上一篇
Servlet、Filter、Listener
下一篇
Nginx配置