QueryRunner--常见方法
数据库链接池的使用,一方面解决了数据库访问过多时造成数据库承受的压力,另一方面也简化了数据查询,今天就
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()方法得到整型
ps:今晚就到这,后续继续学习新的方法。
QueryRunner--常见方法的更多相关文章
- C#图片处理常见方法性能比较
C#图片处理常见方法性能比较 来自:http://www.cnblogs.com/sndnnlfhvk/archive/2012/02/27/2370643.html 在.NET编程中,由于GDI ...
- window对象中的常见方法
<body><!-- window对象中的常见方法--><script type="text/javascript"> var timeid; ...
- python socket 常见方法及 简单服务/客户端
socket 常见方法: 补充说明:what is file descriptor? 文件描述符是什么? 参考(http://stackoverflow.com/questions/8191905/w ...
- VBS操作Excel常见方法
VBS操作Excel常见方法 作者: 字体:[增加 减小] 类型:转载 时间:2009-11-13我要评论 VBS控制Excel常见方法,需要的朋友可以参考下. dim oExcel,oWb,oShe ...
- UIPickerView常见属性、常见方法(包括代理方法和数据源方法)的一些说明
一.UIPickerView 1.UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id< ...
- jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. [WebMethod] public static string SayHe ...
- AJAX跨域的常见方法
由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问.比如说你的网站域名是aaa.com,想要通过AJAX请求 ...
- Java中字符串的一些常见方法
1.Java中字符串的一些常见方法 /** * */ package com.you.model; /** * @author Administrator * @date 2014-02-24 */ ...
- openlayers3 基础(常见方法,类及实现)
ol3接口大全1.ol.Map类:(地图容器类) 实现: ol.Map(参数) 参数说明:1.1 target,说明地图所在的html元素. 如果没有指定,必须调用ol.Map类的setTarget( ...
- 53.CSS---CSS水平垂直居中常见方法总结
CSS水平垂直居中常见方法总结 1.元素水平居中 当然最好使的是: margin: 0 auto; 居中不好使的原因: 1.元素没有设置宽度,没有宽度怎么居中嘛! 2.设置了宽度依然不好使,你设置的是 ...
随机推荐
- C#添加背景音乐
<MediaElement Name="audio"/> <Button Name="music" Content="点我有音乐哦& ...
- C语言的第一次博客作业
题目1:7-3 温度转换 1.代码 int fahr, celsius; fahr=150; celsius=5*(fahr-32)/9; printf("fahr = %d, celsiu ...
- Software Engineering-HW1
title: Software Engineering-HW1 date: 2017-09-13 15:41:13 tags: HW --- 阅读随笔 在<徐宥:掉进读书的兔子洞>里面, ...
- pickle使用及案例
一.字典格式数据源写入数据库文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import pickle accounts ={1000:'alex', ...
- HTTP协议中PUT和POST使用区别
有的观点认为,应该用POST来创建一个资源,用PUT来更新一个资源:有的观点认为,应该用PUT来创建一个资源,用POST来更新一个资源:还有的观点认为可以用PUT和POST中任何一个来做创 ...
- python之路--day13-模块
1,什么是模块 模块就是系统功能的集合体,在python中,一个py文件就是一个模块, 例如:module.py 其中module叫做模块名 2,使用模块 2.1 import导入模块 首次带入模块发 ...
- WebApi 接口返回值类型详解 ( 转 )
使用过Webapi的园友应该都知道,Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 此篇就围绕这四块分 ...
- Python内置函数(52)——getattr
英文文档: getattr(object, name[, default]) Return the value of the named attribute of object. name must ...
- Python-Cpython解释器支持的进程与线程-Day9
Cpython解释器支持的进程与线程 阅读目录 一 python并发编程之多进程 1.1 multiprocessing模块介绍 1.2 Process类的介绍 1.3 Process类的使用 1.4 ...
- ArrayList、Vector、LinkedList、HashMap、HashTable的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,次数组元素大于实际存储的数据以便添加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数 ...