数据库链接池的使用,一方面解决了数据库访问过多时造成数据库承受的压力,另一方面也简化了数据查询,今天就
DBUtils包所提供的QueryRunner类(org.apache.commons.dbutils.QueryRunner)作出说明:
简化SQL查询
与ResultSetHandler协同工作将使编码量大为减少。
- 常见方法
query(String sql, Object[] params, ResultSetHandler rsh); query(String sql, Object params, ResultSetHandler rsh):方法本身不提供数据库连接,执行选择查询,在查询中,对象阵列的值被用来作为查询的置换参数。
- update(String sql, Object params):update(String sql, Object params[]):执行插入、更新或删除(DML)操作。
- query(String sql, ResultSetHandler rsh):执行无需参数的选择查询。
统一说明,Object[] params接受的是一个参数数组,Object params接收的是单个参数
- 先看常见工具类的编写:----------------这里就c3p0数据库连接池查询作出例子
public class JdbcUtils { private static DataSource ds; static{ ds = new ComboPooledDataSource(); } public static DataSource getDataSource(){ return ds; } }
- 就两个参数查询作为参考:
- 补充:
- 实体Users-------id--- username----- password(三个封装对象)
- 实体QueryResult-------list集合------totalrecord整型
- 目标====从数据库中获得所有的user信息,totalrecord是总记录数记录user的总数
//获取到页面数据和页面大小 public QueryResult pageQuery(int startindex,int pagesize){ try { QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource()); QueryResult qr = new QueryResult(); String sql="select * from pagination limit ?,?"; Object params[]={startindex,pagesize}; List list= (List) runner.query(sql, params, new BeanListHandler(Users.class)); qr.setList(list); sql = "select count(*) from pagination"; int totalrecord= 0; runner.update(sql, params) totalrecord= ((Long) runner.query(sql, new ScalarHandler())).intValue(); qr.setTotalrecord(totalrecord); return qr; } catch (Exception e) { throw new RuntimeException(e); } }
代码分析:
List list= (List) runner.query(sql, params, new BeanListHandler(Users.class));
params是一个参数数组,里面是数据库查询需要的两个参数 new BeanListHandler(Users.class)得到list集合 同时将数组封装到users这个实体中,简化操作油然而现
totalrecord= ((Long) runner.query(sql, new ScalarHandler())).intValue();
这个是无需参数的查询,得带一个值,那就是数据库总共多条记录
关键:((Long) runner.query(sql, new ScalarHandler())).intValue()
runner.query(sql, new ScalarHandler())得到的值并不能直接强转为integer类型,但是接受端参数是整数类型,因此先将值转为long,然后整体调用intValue()方法得到整型
http://www.kvvz4431.cn
http://www.uuza3384.cn
http://www.yyvw5376.cn
http://www.keej8837.cn
http://www.izpt4079.cn
http://www.pawt8491.cn
http://www.tagg4453.cn
http://www.zunr6962.cn
http://www.bbbv0837.cn
http://www.cigo1908.cn
http://www.ghkd7086.cn
http://www.dynl6229.cn
http://www.qvaa7038.cn
http://www.klkz4599.cn
http://www.gjsx9410.cn
http://www.chnp3876.cn
http://www.evkj6051.cn
http://www.evsv0341.cn
http://www.hvox0584.cn
http://www.bxam8036.cn
http://www.wkve4477.cn
http://www.vxyc7060.cn
http://www.gdud1657.cn
http://www.efsu8541.cn
http://www.zuho4758.cn
http://www.syjo7453.cn
http://www.jtzx1117.cn
http://www.uaoq1674.cn
http://www.wdab6663.cn
http://www.zesc9096.cn
http://www.cswx7205.cn
http://www.rfk7436.cn
http://www.rhy8758.cn
http://www.zpr4789.cn
http://www.sii9170.cn
http://www.auk5021.cn
http://www.imd3928.cn
http://www.pjp8645.cn
http://www.gtt0467.cn
http://www.ogs0753.cn
http://www.hry3962.cn
http://www.xut2146.cn
http://www.rxq4617.cn
http://www.yys0858.cn
http://www.vsq0054.cn
http://www.bqu7903.cn
http://www.mcx5948.cn
http://www.rvt9489.cn
http://www.gab2613.cn
http://www.vuv2033.cn
http://www.qpz8499.cn
http://www.fme4008.cn
http://www.wfg7038.cn
http://www.edt2696.cn
http://www.gxq9182.cn
http://www.wbd0565.cn
http://www.evl5793.cn
http://www.tuq2170.cn