DbUtils使用

【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, UPDATEDELETE语句

int update(Connection conn, String sql, Object… params)
需要一个或多个替换参数以及一个数据库连接来执行INSERT, UPDATEDELETE语句

int update(Connection conn, String sql, Object param)
需要一个替换参数,以及一个数据库连接来执行INSERT, UPDATEDELETE语句

int update(String sql)
不需要替换参数来执行已给予的INSERT, UPDATEDELETE语句

int update(String sql, Object… params)
需要一个或多个替换参数来执行INSERT, UPDATEDELETE语句(参数无需带有连接)

int update(String sql, Object param)
不需要替换参数来执行INSERT, UPDATEDELETE语句(参数无需带有连接)

配置数据源:

//获取数据源
private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//QueryRunner需要一个数据源作为参数
private static QueryRunner queryRunner = new QueryRunner(dataSource);
  1. 添加信息

    //添加纪录
    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中查询的结果显示,数据已添加:

  2. 编辑信息以及删除信息

编辑信息:

//按照给定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");
}
  1. 查看所有信息

在使用 query 方法时,需要使用 ResultSetHandler, 具体使用方式将在另一篇文章中阐述

//将查询的结果,使用 ArrayListHandler,存入ArrayList,以数组形式打印:
//将查询的结果,使用 BeanListHandler,存入List,以数组形式打印:
public void selectAll(){
try {
QueryRunner runner=new QueryRunner(Dbutils.getDatasource());
List list=runner.query(“select * from student”, new BeanListHandler(Student.class)); //1.返回的Student对象集合,使用了反射,内省
List<Object[]> list2=runner.query(“select * from student”,new ArrayListHandler()); //2.返回的数组
System.out.println(list.toString()); //1.

        for(int i=0;i<list2.size();i++){
            System.out.println(Arrays.toString(list2.get(i)));           //2.
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

//查询具体的行,返回数组
public void testArrayListHander() throws SQLException {
QueryRunner runner = new QueryRunner(Dbutils.getDatasource());

Object[] query = runner.query("select * from student where id = ?", new ArrayHandler(), 1);
	for(Object object:query){
    System.out.println(object);
}

}

//查询具体的行,返回对象
public void select3() throws Exception{
QueryRunner qr=new QueryRunner(Dbutils.getDatasource());
Student student=(Student) qr.query(“select * from student where id=?”,new BeanHandler(Student.class),1);
System.out.println(student.toString());
}
//查询具体的行,返回数组
public void testArrayListHander() throws SQLException {
QueryRunner runner = new QueryRunner(Dbutils.getDatasource());

Object[] query = runner.query(“select * from student where id = ?”, new ArrayHandler(), 1);
for(Object object:query){
System.out.println(object);
}
}

//查询具体的行,返回对象
public void select3() throws Exception{
QueryRunner qr=new QueryRunner(Dbutils.getDatasource());
Student student=(Student) qr.query(“select * from student where id=?”,new BeanHandler(Student.class),1);
System.out.println(student.toString());
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值