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


}

猜你喜欢

转载自blog.csdn.net/m0_57037182/article/details/124908531