queryrunner连接mysql_JDBC学习(三)--QueryRunner类的使用
时间: 2023-11-18 14:03:11 浏览: 225
数据库以及数据库连接工具(JDBC与MYSQL)
在上一篇文章中,我们介绍了JDBC中的PreparedStatement和ResultSet类的使用。在本文中,我们将介绍Apache Commons DbUtils库中的QueryRunner类。
QueryRunner类是Apache Commons DbUtils库中的一个类,它封装了大量的JDBC操作,简化了JDBC编程的复杂度。使用QueryRunner类可以避免编写大量的JDBC代码,提高开发效率。
使用QueryRunner类需要引入以下依赖:
```xml
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>
```
接下来我们来看一下如何使用QueryRunner类。
1. 建立连接
在使用QueryRunner类之前,需要先建立与数据库的连接。这可以通过JDBC中的DriverManager类来实现。例如:
```java
Connection conn = DriverManager.getConnection(url, user, password);
```
其中,url、user和password分别表示数据库的URL、用户名和密码。
2. 执行SQL语句
QueryRunner类中提供了多个方法来执行SQL语句。其中,最常用的方法是query()和update()方法。
query()方法用于查询数据,它的使用方式如下:
```java
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM user WHERE id=?";
Object[] params = {1};
ResultSetHandler<List<User>> rsh = new BeanListHandler<>(User.class);
List<User> userList = qr.query(conn, sql, rsh, params);
```
其中,第一个参数conn表示与数据库的连接,第二个参数sql表示要执行的SQL语句,第三个参数rsh表示查询结果的处理器,第四个参数params是一个数组,表示SQL语句中的参数。
update()方法用于更新数据,它的使用方式如下:
```java
QueryRunner qr = new QueryRunner();
String sql = "UPDATE user SET name=? WHERE id=?";
Object[] params = {"张三", 1};
qr.update(conn, sql, params);
```
其中,第一个参数conn表示与数据库的连接,第二个参数sql表示要执行的SQL语句,第三个参数params是一个数组,表示SQL语句中的参数。
3. 释放资源
在使用QueryRunner类完成数据库操作后,需要释放相应的资源,包括ResultSet、Statement和Connection等。这可以通过调用DbUtils类中的close()方法来实现。例如:
```java
DbUtils.close(resultSet);
DbUtils.close(statement);
DbUtils.close(connection);
```
4. 示例代码
下面是一个完整的示例代码,演示了如何使用QueryRunner类完成数据库操作:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
public class QueryRunnerDemo {
public static void main(String[] args) throws SQLException {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
// 查询数据
QueryRunner qr = new QueryRunner();
String sql = "SELECT * FROM user WHERE id=?";
Object[] params = {1};
ResultSetHandler<List<User>> rsh = new BeanListHandler<>(User.class);
List<User> userList = qr.query(conn, sql, rsh, params);
for (User user : userList) {
System.out.println(user);
}
// 更新数据
sql = "UPDATE user SET name=? WHERE id=?";
params = new Object[]{"张三", 1};
qr.update(conn, sql, params);
conn.close();
}
}
```
以上就是QueryRunner类的使用方法。QueryRunner类封装了大量的JDBC操作,可以避免编写大量的JDBC代码,提高开发效率。同时,使用QueryRunner类也需要注意资源的释放,避免出现资源泄漏的情况。
阅读全文