jdbc通用查询封装
时间: 2023-07-07 18:24:00 浏览: 54
JDBC通用查询封装是指将JDBC查询操作封装为通用方法,方便开发者在项目中进行调用,避免了重复的代码编写。
以下是一个简单的JDBC通用查询封装的示例代码:
```java
public class JdbcUtil {
private static String driver = "com.mysql.cj.jdbc.Driver"; // 数据库驱动
private static String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false"; // 数据库连接地址
private static String user = "root"; // 数据库用户名
private static String password = "123456"; // 数据库密码
static {
try {
// 加载数据库驱动
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接
*
* @return Connection对象
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 关闭数据库连接
*
* @param conn Connection对象
* @param stmt Statement对象
* @param rs ResultSet对象
*/
public static void close(Connection conn, Statement stmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 执行查询操作,返回结果集
*
* @param sql SQL语句
* @param args 参数列表
* @return ResultSet对象
*/
public static ResultSet executeQuery(String sql, Object... args) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = getConnection(); // 获取数据库连接
pstmt = conn.prepareStatement(sql); // 创建PreparedStatement对象
// 设置SQL语句中的参数
for (int i = 0; i < args.length; i++) {
pstmt.setObject(i + 1, args[i]);
}
rs = pstmt.executeQuery(); // 执行查询操作
} catch (SQLException e) {
e.printStackTrace();
throw e;
} finally {
close(conn, pstmt, null); // 关闭连接
}
return rs;
}
}
```
以上代码中,JdbcUtil类封装了获取数据库连接、关闭数据库连接、执行查询操作等通用方法。开发者只需要调用`executeQuery`方法即可实现查询操作,无需重复编写获取连接、执行SQL语句、关闭连接等代码。
示例调用代码如下:
```java
String sql = "SELECT * FROM user WHERE age > ?";
ResultSet rs = JdbcUtil.executeQuery(sql, 18);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id=" + id + ", name=" + name + ", age=" + age);
}
JdbcUtil.close(null, null, rs); // 关闭ResultSet对象
```
以上代码中,开发者只需要传入SQL语句和参数列表即可实现查询操作。同时,JdbcUtil类也封装了关闭ResultSet对象的方法,避免了重复的代码编写。