【JavaWeb】DbUtils入门之QueryRunner
DbUtils简介
根据官网的介绍,DbUtils是一种 JDBC Utility Component (翻译过来大概就是:JDBC实用部件),故名思意,和数据库操作有关
官网上的简介也称之为 JDBC helper library ,由此可知,DbUtils是一个工具类库,用来进行数据库通信的
用法
官方原文:The core classes/interfaces in DbUtils are QueryRunner and ResultSetHandler(在 DbUtils 中的核心类/接口为 QueryRunner 和 ResultSetHandler)
所以,我们需要掌握这两个类的使用,这篇文章先阐述第一个类
QueryRunner
QueryRunner中一共有6种方法:
- execute(执行SQL语句)
- batch(批量处理语句)
- insert(执行INSERT语句)
- insertBatch(批量处理INSERT语句)
- query(SQL中 SELECT 语句)
- update(SQL中 INSERT, UPDATE, 或 DELETE 语句)
我们主要介绍最后两种(最常用):
源码:
query方法
T query(String sql, ResultSetHandler rsh)
不需要替换参数来执行已给予的SELECT语句- T query(String sql, ResultSetHandler rsh, Object... params)
需要一个或多个替换参数来执行已给予的SELECT语句,并返回一种对象结果
- T query(String sql, ResultSetHandler rsh, Object... params)
update方法
int update(Connection conn, String sql)
不需要替换参数来执行INSERT, UPDATE
DELETE语句int update(Connection conn, String sql, Object... params)
需要一个或多个替换参数以及一个数据库连接来执行INSERT, UPDATE
DELETE语句int update(Connection conn, String sql, Object param)
需要一个替换参数,以及一个数据库连接来执行INSERT, UPDATE
DELETE语句int update(String sql)
不需要替换参数来执行已给予的INSERT, UPDATE
DELETE语句int update(String sql, Object... params)
需要一个或多个替换参数来执行INSERT, UPDATE
DELETE语句(参数无需带有连接)int update(String sql, Object param)
不需要替换参数来执行INSERT, UPDATE
DELETE语句(参数无需带有连接)
Demo
1. 建表
2. 数据源
我们采用上次配置的c3p0-config.xml文件,只是将数据库名称改为test:
然后配置数据源:
//获取数据源
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//QueryRunner需要一个数据源作为参数
private static QueryRunner queryRunner = new QueryRunner(dataSource);
###### 3. 添加信息
//添加纪录
private static void add(){
String id, name, gender;
for (int i = 0; i < 10; i++) {
id = String.valueOf(i);
name = "name" + String.valueOf(i);
gender = i % 2 == 0 ? "male" : "female";
try{
String sql = "INSERT INTO test VALUES(?,?,?);";
Object[] params = {id, name, gender};
queryRunner.update(sql, params);
}catch(SQLException e){
throw new RuntimeException(e);
}
}
}
执行完添加操作后,在MySQL Workbench中查询的结果显示,数据已添加:
4. 编辑信息以及删除信息
编辑信息:
//按照给定ID编辑信息
private static void edit(String id){
try{
String sql = "UPDATE test SET name = ?, gender = ? WHERE id = ?;";
Object[] params = {"change", "female", id};
queryRunner.update(sql,params);
}catch (SQLException e){
throw new RuntimeException(e);
}
}
public static void main(String[] args){
edit("0");
}
编辑结果:
删除信息:
//按照给定ID删除信息
private static void delete(String id){
try{
String sql = "DELETE FROM test WHERE id = ?";
queryRunner.update(sql, id);
}catch (SQLException e){
throw new RuntimeException(e);
}
}
public static void main(String[] args){
delete("0");
}
删除结果:
5. 查看所有信息
在使用 query 方法时,需要使用 ResultSetHandler, 具体使用方式将在另一篇文章中阐述
将查询的结果,使用 ArrayListHandler,存入ArrayList,以数组形式打印:
private static void showAll(){
try{
String sql = "SELECT * FROM test;";
List<Object[]> list = queryRunner.query(sql, new ArrayListHandler());
for (Object[] aList : list) {
System.out.println(Arrays.toString(aList) + " ");
}
}catch (SQLException e){
throw new RuntimeException(e);
}
}
关于QueryRunner对数据库的CRUD操作就介绍到此了。
【JavaWeb】DbUtils入门之QueryRunner的更多相关文章
- 《JavaWeb从入门到改行》JDBC经典秘方QueryRunner
目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简 ...
- JavaWeb学习总结(一)——JavaWeb开发入门
http://www.cnblogs.com/xdp-gacl/p/3729033.html 只为成功找方法,不为失败找借口! JavaWeb学习总结(一)--JavaWeb开发入门 一.基本概念 1 ...
- JavaWeb学习总结(一)JavaWeb开发入门
静态网页和动态网页 静态网页:在服务器上没有经过服务器解释执行的网页. 动态网页:在服务器上经过服务器解释执行的网页. 无论是静态网页还是动态网页,客户端看到的网页都是由HTML所构成的,所以Java ...
- 《JavaWeb从入门到精通》(明日科技,清华大学出版社)
<JavaWeb从入门到精通>(明日科技,清华大学出版社)
- pache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口
Apache—DBUtils框架简介.DbUtils类.QueryRunner类 .ResultSetHandler接口 commons-dbutils 是 Apache 组织提供的一个开源 JDBC ...
- 《JavaWeb从入门到改行》注册时向指定邮箱发送邮件激活
javaMail API javaMail是SUN公司提供的针对邮件的API . 两个jar包 mail.jar 和 activation.jar java mail中主要类:javax.mail. ...
- 《JavaWeb从入门到改行》多重外键关系在java中的处理方案
目录:(点击红色方框展开子目录) 问题描述 无 项目案例说明 业务描述 数据库说明 项目源码及下载 无 问题描述 如上两图,数据库中各个表之间有很多的外键关系,其中业务关系是一个用户下有该用户的订单, ...
- 《JavaWeb从入门到改行》分页功能的实现
@目录 什么是分页 ? 两个子模块功能的问题分析 和 解决方案 有条件查和无条件查询的影响 和 解决方案 项目案例: mysql + commons-dbutils+itcast-tools+Base ...
- 简单粗暴,详细得不要不要的 JavaWeb快速入门实例(1)
额,有些标题党的嫌疑,小细节不用在意哈... 前端时间我在写一个系列,是关于JavaWeb的一个入门级项目实战,我的初衷就是打算写给初学者的,希望能对他们有所帮助. 这段时间博主也接触了一些事情,感觉 ...
随机推荐
- [机器学习]-[数据预处理]-中心化 缩放 KNN(二)
上次我们使用精度评估得到的成绩是 61%,成绩并不理想,再使 recall 和 f1 看下成绩如何? 首先我们先了解一下 召回率和 f1. 真实结果 预测结果 预测结果 正例 反例 正例 TP 真 ...
- ZooKeeper集群的安装、配置、高可用测试
Dubbo注册中心集群Zookeeper-3.4.6 Dubbo建议使用Zookeeper作为服务的注册中心. Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的.正是 ...
- java实现最小生成树的prim算法和kruskal算法
在边赋权图中,权值总和最小的生成树称为最小生成树.构造最小生成树有两种算法,分别是prim算法和kruskal算法.在边赋权图中,如下图所示: 在上述赋权图中,可以看到图的顶点编号和顶点之间邻接边的权 ...
- 更改sql多条数据,更新替换字符串中固定的字符串
需求产生的背景: 数据库里建库时插入了字典数据,可是这个字典数据,有一些是不准确的,所以就需要把一些固定的数据查出来替换掉. 问题解决逻辑: 大体逻辑是,首先把固定需要替换的字符串提取出来,赋值给变量 ...
- apache (order allow,deny or deny,allow)
平台:"rhel6.2" 实验内容: "测试apache‘order allow,deny’ or ‘order deny,allow’ 功能" 配置文件:&q ...
- sql 查询 ORA-12170 TNS 连接超时特殊原因
一般对于ORA-12170这个问题 1 看数据ip 是否能ping通 2 数据库服务是否启动 3 数据库服务所在服务器防火墙 然而当你能进去数据,而报这个这错时: 1 看代码中数据库连接是写错 2 如 ...
- linux_vi快捷键
vi有哪些快捷方式? 到行头: 0 ^ home 到行尾: $ shif+a(编辑模式) end 退出保存: wq . x .wq!(强制退出保存) 强制退出不保存: q! 光标移到文件最后一行: s ...
- Activiti简介
Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术 ...
- 理解maven的核心概念
原文出处:http://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html 好久没进行java方面的开发了,最近又完成了一个java相关的 ...
- AWS认证权威考经(助理级认证篇)
笔者作为AWS官方认证的早期通过者,已经拿到了AWS的助理级解决方案架构师.开发者认证,系统管理员认证.这几年也陆续指导公司多人通过AWS的认证.本篇文章将分享如何通过自学的方式轻松通过AWS的助理级 ...