
本文共 3987 字,大约阅读时间需要 13 分钟。
JDBC 入门
Eclipse环境配置
在开始 JDBC 开发之前,需要熟悉 Eclipse 的基本操作。这将帮助你更有效地编写和调试 Java 代码。
自动代码补全
Eclipse 的默认代码补全设置可能会cacique到开发者。我们可以进行如下配置:
- Window > Preferences > Java > Editor > Content Assist
- 找到
Auto activation triggers for Java
选项卡,将.
后的文本框添加 "qwertyuiopasdfghjklzxcvbnm"。 - 这样你可以在输入任意字母时都能得到代码提示。
常用快捷键
- Keyboard Shortcuts Reference
Ctrl + Shift + R
:打开资源列表Ctrl + Shift + F
:格式化代码Ctrl + E
:快速切换编辑器Shift + Enter
:在当前行或下一行创建空白
JDBC 基本概念
JDBC(Java Database Connectivity)是 Java 提供的一个标准接口,允许程序与数据库进行交互。它的主要目标是为不同数据库系统提供统一的访问方式,简化数据库操作。
JDBC 的优点
- 统一接口:无需了解具体数据库的操作细节。
- 灵活性:可以连接任何支持 JDBC 的数据库系统。
- 简化开发:代码简单易懂,减少学习成本。
数据库连接池优化
直接使用 DriverManager
获取数据库连接存在许多问题:资源浪费、性能低下等。数据库连接池的引入是解决这些问题的关键。
数据库连接池的优势
- 连接缓存:预先创建连接并缓存起来,减少每次连接获取的延迟。
- 连接管理:自动归还连接,避免资源耗尽。
- 高并发支持:可以处理大量同时访问数据库的事并发。
常用连接池实现
- DBCP:Apache 提供,性能较高但有一些Bug。
- C3P0: Hibernate 推荐,稳定性较好。
- Druid:由阿里开源平台提供,性能优异,支持监控。
JDBC 编程实例
第一步:获取数据库连接
1.azelxnaw rqjrotg(DruidDataSourceFactory.createDataSource(pros)
) 创建数据源。 2.azotivot zrxnek Juli Connections getConnection() 获取数据库连接。
第二步:执行 SQL 语句
UPDATE 语句
- 使用
Statement
或PreparedStatement
进行插入、更新和删除操作。 - PreparedStatement 是-offsetloat 类,因为它可以防止 SQL 注入攻击。
QUERY 语句
- 使用
ResultSet
对象处理查询结果。 ResultSetMetaData
提供关于结果集的元数据。
第三步:批量操作
对于批量插入或更新,可以使用 PreparedStatement
的 addBatch()
和 executeBatch()
方法。
BLOB 数据处理
MySQL 中,BLOB 是一个二进制大型对象,用于存储大量数据。
- 插入 使用
setBlob()
方法将二进制输入流添加到数据库中。 - 读取 使用
getBlob()
方法获取 BLOB 数据,并将其转换为二进制流保存。
DAO 模板化开发
DAO 设计思想
- 模块化:将数据访问逻辑封装成独立的类。
- 接口定义:定义标准的数据操作接口,提高代码可维护性。
创建 DAO 实现类
比如,用于操作 Customer
表的 DAO 类结构如下:
└── src ├── com │ └── atuse │ └── dao │ ├── BaseDAO.java │ ├── CustomerDAO.java │ └── CustomerDAOImpl.java
SQL 操作方法
-
插入
public void insert(String sql, Object... args) { Connection conn = null; try { conn = JDBCUtils.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); for (int i = 0; i < args.length; i++) { ps.setObject(i + 1, args[i]); } ps.execute(); JDBCUtils.closeResource(conn, ps); } catch (Exception e) { e.printStackTrace(); }}
-
查询
public T getInstance(Class
clazz, String sql, Object... args) { Connection conn = null; try { conn = JDBCUtils.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); for (int i = 0; i < args.length; i++) { ps.setObject(i + 1, args[i]); } ResultSet rs = ps.executeQuery(); // 处理 ResultSet 类型 ... return null; } catch (Exception e) { e.printStackTrace(); } return null;} -
批量处理
public int[] batchInsert(String sql, Object[] params) { Connection conn = null; try { conn = JDBCUtils.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); ps.addBatch(); } int[] results = ps.executeBatch(); ps.clearBatch(); return results; } catch (Exception e) { e.printStackTrace(); } return new int[0];}
Apache Commons DbUtils
功能简介
Commons DbUtils 是 Apache 提供的一个简化 JDBC 编程的工具类库,简化了数据库操作。
主要功能
- 连接管理:提供工具类对数据库连接、预编译语句和结果集进行管理。
- 批量操作:支持批量插入、更新和删除。
- ResultSet Handler:处理结果集,支持将查询结果转换为 Java 对象。
常用 API
- QueryRunner:简化数据库操作。
- ResultSetHandler:定义处理结果集的接口。
使用 Commons DbUtils 能够显著减少 JDBC 代码量,同时保持性能。
SQL 与 Java 数据类型转换
以下是常见的 SQL 数据类型及其对应的 Java 数据类型:
Java 类型 | SQL 类型 |
---|---|
boolean | TINYINT |
byte | SMALLINT |
char | VARCHAR |
short | MEDIUMINT |
int | INTEGER |
long | BIGINT |
String | CHAR, VARCHAR |
byte array | BINARY, VARBINARY |
java.sql.Date | DATE |
java.sql.Time | TIME |
java.sql.Timestamp | TIMESTAMP |
开源数据库连接工具
选择合适的数据库连接工具对提升开发效率有显著帮助。下列是几种常用的工具:
扩展优化
配置管理
将数据库连接信息放在配置文件(如 jdbc.properties
)中,灵活管理配置参数。
连接池监控
使用 Druid 连接池可以实现对数据库连接池和 SQL 进行实时监控。
最后
通过熟悉 JDBC 基本操作、使用连接池优化数据库访问,并结合工具类如 Commons DbUtils,可以显著提升 Java 功能开发效率。这篇指南为你提供了 JDBC 编程的实用建议和代码示例。
发表评论
最新留言
关于作者
