AsyncQueryRunner接口
org.apache.commons.dbutils.AsyncQueryRunner
类用于异步执行长时间运行的SQL查询。此类是线程安全的。此类与QueryRunner有相同的方法,但它返回Callable对象,这些对象可在以后用于检索结果。
1 QueryRunner的语法
String updateQuery = "UPDATE customer SET name=? WHERE id=?";
future = asyncQueryRunner.update(conn,
updateQuery , "rolse",14);
2 QueryRunner的示例
2.1 编写Customer实体类
package com.yiidian.domain;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class Customer {
private Integer id;
private String name;
private String gender;
private String telephone;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
2.2 编写核心类
MainApp:
package com.yiidian.dbutils;
import com.yiidian.domain.Customer;
import org.apache.commons.dbutils.AsyncQueryRunner;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class MainApp {
// 驱动程序
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
// URL连接
static final String DB_URL = "jdbc:mysql://localhost:3306/test";
//数据库信息
static final String USER = "root";
static final String PASS = "root";
public static void main(String[] args) throws SQLException {
Connection conn = null;
AsyncQueryRunner asyncQueryRunner = new AsyncQueryRunner( Executors.newCachedThreadPool());
DbUtils.loadDriver(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
Future<Integer> future = null;
try {
future = asyncQueryRunner.update(conn,
"UPDATE customer SET name=? WHERE id=?", "rose",4);
Integer updatedRecords = future.get(10, TimeUnit.SECONDS);
System.out.println("更新了 "+updatedRecords + " 条记录!");
} catch(Exception e){
System.out.println(e);
}finally {
DbUtils.close(conn);
}
}
}
2.3 运行测试
热门文章
优秀文章