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.设置了宽度依然不好使,你设置的是 ...
随机推荐
- 云计算--网络原理与应用--20171123--网络地址转换NAT
NAT的概述 NAT的配置 实验 一. NAT的概述 NAT(Network address translation,网络地址转换)通过将内部网络的的私有地址翻译成全球唯一的共有网络IP地址,是内部网 ...
- 团队作业2:需求分析&原型设计
Deadline: 2017-11-5 22:00PM,以博客发表日期为准. 评分基准: 按时交 - 有分,检查的项目包括后文的三个方面 需求分析 原型设计 编码规范 晚交 - 0分 迟交两周以 ...
- Linux下Java通用安装方法
1.到oracle官网下下载对应jdk包,一般为%x64%.tar.gz格式. 2.建立目录: $ mkdir /usr/local/java 3.将压缩包解压至/usr/local/java 4.修 ...
- Win7下安装composer, 并使用其安装smarty
安装composer需要开启PHP openssl扩展. 1) 先查看PHP是否开启了openssl扩展 键盘win+r 输出cmd, 可以看到Dos窗口, 然后执行php -m (需要添加PHP环境 ...
- Python内置函数(32)——all
英文文档: all(iterable) Return True if all elements of the iterable are true (or if the iterable is empt ...
- nodejs 使用CAS 实现 单点登录(SSO) 【开源库实现,简单】
大部分企业使用 java 开发业务系统, 针对java cas的认证 demo 比较多 ,还有PHPCAS ,标准的参考这里: phpCAS 的使用 整理登录流程如下图,图片来自网络 找了不少资料,n ...
- React Native学习(九)—— 使用Flexbox布局
本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...
- HTTP与私有二进制协议之间的区别
简单的文本协议.二进制协议 写网络程序躲不过协议,协议其实就是定义了消息的格式,以及消息是如何交换的.协议可简单可复杂,复杂精密如TCP协议,简单奔放如HTTP的协议.这里将我所接触到的协议稍微总结一 ...
- SpringBoot单元测试中的测试方法执行顺序
一.忽略方法@ignore 二.执行顺序@FixMethodOrder(MethodSorter.JVM) 我们在执行JUnit测试用例时,有时需要按照定义顺序执行单元测试方法,比如如在测试数据库相关 ...
- 阿里云API网关(3)快速入门(调用 API)
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...