博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JavaWeb】DbUtils入门之QueryRunner
阅读量:4497 次
发布时间:2019-06-08

本文共 3349 字,大约阅读时间需要 11 分钟。

DbUtils简介

根据官网的介绍,DbUtils是一种 JDBC Utility Component (翻译过来大概就是:JDBC实用部件),故名思意,和数据库操作有关

官网上的简介也称之为 JDBC helper library ,由此可知,DbUtils是一个工具类库,用来进行数据库通信的

用法

官方原文:The core classes/interfaces in DbUtils are QueryRunner and ResultSetHandler(在 DbUtils 中的核心类/接口为 QueryRunnerResultSetHandler

所以,我们需要掌握这两个类的使用,这篇文章先阐述第一个类

QueryRunner

QueryRunner中一共有6种方法:

  • execute(执行SQL语句)
  • batch(批量处理语句)
  • insert(执行INSERT语句)
  • insertBatch(批量处理INSERT语句)
  • query(SQL中 SELECT 语句)
  • update(SQL中 INSERT, UPDATE, 或 DELETE 语句)

我们主要介绍最后两种(最常用):

源码:
query方法
  1. T query(String sql, ResultSetHandler rsh)

    不需要替换参数来执行已给予的SELECT语句

    1. T query(String sql, ResultSetHandler rsh, Object... params)
      需要一个或多个替换参数来执行已给予的SELECT语句,并返回一种对象结果
update方法
  1. int update(Connection conn, String sql)

    不需要替换参数来执行INSERT, UPDATE
    DELETE
    语句

  2. int update(Connection conn, String sql, Object... params)

    需要一个或多个替换参数以及一个数据库连接来执行INSERT, UPDATE
    DELETE
    语句

  3. int update(Connection conn, String sql, Object param)

    需要一个替换参数,以及一个数据库连接来执行INSERT, UPDATE
    DELETE
    语句

  4. int update(String sql)

    不需要替换参数来执行已给予的INSERT, UPDATE
    DELETE
    语句

  5. int update(String sql, Object... params)

    需要一个或多个替换参数来执行INSERT, UPDATE
    DELETE
    语句(参数无需带有连接)

  6. int update(String sql, Object param)

    不需要替换参数来执行INSERT, UPDATE
    DELETE
    语句(参数无需带有连接)

    Demo
1. 建表

1240

2. 数据源

我们采用上次配置的,只是将数据库名称改为test:

1240

然后配置数据源:

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

1240

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");    }

编辑结果:

1240

删除信息:

//按照给定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");    }

删除结果:

1240

5. 查看所有信息

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

将查询的结果,使用 ArrayListHandler,存入ArrayList,以数组形式打印:

private static void showAll(){        try{            String sql = "SELECT * FROM test;";            List
list = queryRunner.query(sql, new ArrayListHandler()); for (Object[] aList : list) { System.out.println(Arrays.toString(aList) + " "); } }catch (SQLException e){ throw new RuntimeException(e); } }

1240

关于QueryRunner对数据库的CRUD操作就介绍到此了。

转载于:https://www.cnblogs.com/lihanxiang/p/8475548.html

你可能感兴趣的文章
Codeu_576_问题 D: 查找
查看>>
异步编程(二)基于事件的异步编程模式 (EAP)
查看>>
C# 添加,修改,删除Xml节点
查看>>
【转载】互联网知名博客收揽
查看>>
BZOJ1552: [Cerc2007]robotic sort
查看>>
Confirm the Ending--freecodecamp算法题目
查看>>
用UIScrollView做一个支持两点触控缩放图片
查看>>
零基础学python之入门和列表数据(附详细的代码解释和执行结果截图)
查看>>
float浮点数的四舍五入
查看>>
QQ消息记录、接收文件、图片、拍照照片等保存位置
查看>>
SimpleXML 使用详细例子
查看>>
1.17
查看>>
7.16
查看>>
storyBoard中的Segue跳转
查看>>
Sliding animation on Nav Menu in mvc 4 application
查看>>
TeamViewer下载地址
查看>>
8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署...
查看>>
mysqldump: Got errno 28 on write(mysql)
查看>>
TJU1012
查看>>
oracle数据库--序列(sequence)
查看>>