Jdbcutils的QueryRunner

本文深入探讨了common-dbutils.jar中的QueryRunner类,详细介绍了其update和query方法的使用,以及ResultSetHandler接口的各种实现,如BeanHandler、BeanListHandler、MapHandler、MapListHandler和ScalarHandler,适用于Java数据库操作的初学者和进阶开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

common-dbutils.jar

QueryRunner

update方法:
* int update(String sql, Object... params) -->  可执行增、删、改语句
* int update(Connection con, String sql, Object... parmas) --> 需要调用者提供Connection,这说明本方法不再管理Connection了。支持事务!

query方法:
* T query(String sql, ResultSetHandler rsh, Object... params) --> 可执行查询
 > 它会先得到ResultSet,然后调用rsh的handle()把rs转换成需要的类型!
* T query(Connection con, String sql, ResultSetHadler rsh, Object... params),支持事务

ResultSetHandler接口:
* BeanHandler(单行) --> 构造器需要一个Class类型的参数,用来把一行结果转换成指定类型的javaBean对象
* BeanListHandler(多行) --> 构造器也是需要一个Class类型的参数,用来把一行结果集转换成一个javabean,那么多行就是转换成List对象,一堆javabean
* MapHandler(单行) --> 把一行结果集转换Map对象
  > 一行记录:
    sid  sname  age  gender
    1001 zs     99   male
  > 一个Map:
    {sid:1001, sname:zs, age:99, gender:male}
* MapListHandler(多行) --> 把一行记录转换成一个Map,多行就是多个Map,即List<Map>!
* ScalarHandler(单行单列) --> 通常用与select count(*) from t_stu语句!结果集是单行单列的!它返回一个Object

public class CategoryDaoImpl implements CategoryDao { @Override public void add(Category category){ try{ QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "insert into category(id,name) values(?,?)"; Object params[] = {category.getId(), category.getName()}; runner.update(sql, params); } catch(Exception e){ e.printStackTrace(); throw new RuntimeException(e); } } /* (non-Javadoc) * @see dao.impl.CategoryDao#find(java.lang.String) */ @Override public Category find(String id){ try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from category where id=?"; return (Category)runner.query(sql, id, new BeanHandler(Category.class)); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } /* (non-Javadoc) * @see dao.impl.CategoryDao#getAll() */ @Override public List<Category> getAll(){ try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from category"; return (List<Category>)runner.query(sql, new BeanListHandler(Category.class)); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } @Override public int delete(String id) { try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); //执行删除的sql runner.update("delete from category where id=?",id); } catch (SQLException e) { throw new RuntimeException(e);//抛出运行异常 } return 1;//删除成功返回1表示结束 } @Override public void update(Category record) { try{ QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "update category set name=?,where id=? "; Object params[] = { record.getName(), record.getId()}; runner.update(sql, params); } catch(Exception e){ e.printStackTrace(); throw new RuntimeException(e); } } }帮我加一下注释
05-31
public List<Movie> getPageData(int startindex, int pagesize, String category_id){ try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from movie where category_id=? limit ?,?"; Object params[] = {category_id, startindex, pagesize}; return (List<Movie>)runner.query(sql, params, new BeanListHandler(Movie.class)); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } public int getTotalRecord(String category_id){ try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select count(*) from movie where category_id=?"; long totalrecord = (Long)runner.query(sql, category_id, new ScalarHandler()); return (int)totalrecord; } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } //(id,name,author,price,image,description,category_id) @Override public void update(Movie movie) { try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "update movie set name=?,actor=?,price=?,poster=?,intro=?,category_id=? where id=?"; Object params[] = { movie.getName(), movie.getActor(), movie.getPrice(), movie.getPoster(), movie.getIntro(), movie.getCategory_id(),movie.getId()}; runner.update(sql, params); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } } @Override public int delete(String id) { try { QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); //执行删除的sql runner.update("delete from movie where id=?",id); } catch (SQLException e) { throw new RuntimeException(e);//抛出运行异常 } return 1;//删除成功返回1表示结束 }帮我加一下注释
05-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值