搜索
简帛阁>技术文章>QueryRunner的使用方法,史上最全的

QueryRunner的使用方法,史上最全的

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);
    }


}

了解QueryRunner之前要先了解为什么要使用它,它从何处来,为什么而存在。其实这个是dbutils中的一个方法什么是dbutils它出现就是封装了jdbc代码,开发dao层代码简单框架框架
QueryRunner()方法使用和总结DBUtils包所提供QueryRunner类,是针对数据库链接池使用,一方面解决了数据库访问过多时造成数据库承受压力,另一方面也简化了数据查询。Qu
使用JDBC技术是一件繁琐事情,为了使数据库更加高效,有一种简化jdbc技术操作DBUtils。DbUtils(orgapachecommonsdbutilsDbUtils)是Apache组织提
使用获取到数据库连接池后,通过QueryRunnerqrnewQueryRuner(dabaseSource);生成qr对象方法qrquery(Stringsql,newBeanHandlerList
使用QueryRunner结合c3p0进行数据库操作时候,需求:list<bean>进行插入数据库中,但是QueryRunner仅仅支持batch():批处理;Object[][]para
ataSourceJDBC20提供了DataSource接口,它定义了数据库连接规范。它负责建立与数据库连接。当在应用程序中访问数据库时,不必编写连接数据库代码,直接引用DataSource获
UI组件Button按钮第一步初始化(init)第二部安装监听器(Listener)第三部重写监听器方法(newOnclickListener(){})意图Intent分为显示和隐式Intentint
示键/值对集合,这些键和值按键排序并可按照键和索引访问。SortedList最合适对一列健/值对进行排序,在排序时,是对键进行排序,SortedList是Hashtable和Array混合。当使
正所谓磨刀不误砍柴工,就像学习一门语言,也必须从熟悉开发工具开始,好了,废话不多说。标题""一级标题二级标题三级标题四级标题五级标题六级标题注:和「一级标题」之间建议保留一个字符空格,这是最标准M
什么是生成器?生成器是一个包含了特殊关键字yield函数。当被调用时候,生成器函数返回一个生成器。可以使用send,throw,close方法让生成器和外界交互。生成器也是迭代器,但是它不仅仅是