【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语句,并返回一种对象结果
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操作就介绍到此了。