DBUtils包所提供的QueryRunner类,是针对数据库链接池的使用,一方面解决了数据库访问过多时造成数据库承受的压力,另一方面也简化了数据查询。
定义方法:
public abstract class BaseDao {
/**
* 使用apache的DbUtils操作数据库
*/
private final QueryRunner queryRunner = new QueryRunner();
/**
* 用来执行insert,update,delete语句
* @param sql 要执行的sql文
* @param args sql的参数
* @return 如果查询到结果返回>1的值.<br/>
* 返回-1 表示没有查询到结果。
*/
public int update(String sql,Object ... args){
//获取连接
Connection conn = JdbcUtils.getConnection();
//执行sql
try {
return queryRunner.update(conn,sql,args);
} catch (SQLException e) {
e.printStackTrace();
//抛出异常供外部捕获
throw new RuntimeException(e);
}
}
/**
* 查询返回一个JavaBean的sql
* @param type JavaBean类型
* @param sql 执行的sql文
* @param args sql的参数
* @param <T> 类型的泛型
* @return 返回一个T类型的对象
*/
public <T> T queryForOne(Class<T> type,String sql,Object ... args){
//获取连接
Connection conn = JdbcUtils.getConnection();
//执行sql
try {
return queryRunner.query(conn,sql,new BeanHandler<T>(type),args);
} catch (SQLException e) {
e.printStackTrace();
//抛出异常供外部捕获
throw new RuntimeException(e);
}
}
/**
* 返回一个多个JavaBean的List结果集合
* @param type JavaBean类型
* @param sql 执行的sql文
* @param args sql的参数
* @param <T> 类型的泛型
* @return 返回一个List
*/
public <T> List<T> queryForList(Class<T> type,String sql,Object ... args){
//获取连接
Connection conn = JdbcUtils.getConnection();
//执行sql
try {
return queryRunner.query(conn,sql,new BeanListHandler<T>(type),args);
} catch (SQLException e) {
e.printStackTrace();
//抛出异常供外部捕获
throw new RuntimeException(e);
}
}
/**
* 返回一个一行一列的结果
* @param sql 查询的sql
* @param args sql参数
* @return 返回一个一行一列的结果
*/
public Object queryForSingleValue(String sql,Object ... args){
//获取连接
Connection conn = JdbcUtils.getConnection();
//执行sql
try {
return queryRunner.query(conn,sql,new ScalarHandler(),args);
} catch (SQLException e) {
e.printStackTrace();
//抛出异常供外部捕获
throw new RuntimeException(e);
}
}
}
使用步骤:
public class BookDaoImpl extends BaseDao implements BookDao {
/**
* 通过id删除书籍信息
*
* @param id
* @return
*/
@Override
public int deleteBookById(Integer id) {
String sql = "update t_book set delflg = '1',updatetime = now() where id = ?";
return update(sql,id);
}
}