DBUtils使用demo示例

本文详细介绍使用Apache Commons DBUtils库中的QueryRunner类进行数据库查询、更新和删除操作的示例代码,涵盖不同类型的查询处理器如ArrayHandler、ArrayListHandler、BeanHandler等,以及通过QueryRunner进行增删改操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查询

package wl.jdbcDemo;

import com.sun.org.apache.bcel.internal.generic.PUSH;
import jdbcUtil.JDBCUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.*;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Demo3 {
    private static Connection con = JDBCUtils.getConnection();

    public static void main(String[] args) throws SQLException {
//        arrayHandler();
//        ArrayListHandler();
//        BeanHandler();
//        BeanListHandler();
//        ColumnListHandler();
//        ScalarHandler();
//        MapHandler();
        mapListHandler();
    }
    public static void arrayHandler()throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM SORT WHERE SID = 9000";
        Object[] results = qr.query(con,sql,new ArrayHandler());
        System.out.println(results.length);
        for (Object obj : results){
            System.out.print(obj + "\t");
        }
    }

    public static void ArrayListHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM SORT";
        List<Object[]> result = qr.query(con, sql, new ArrayListHandler());
        System.out.println(result);
        for(Object[] objs: result){
            for (Object obj : objs){
                System.out.print(obj + "\t");

            }
            System.out.println();
        }
    }

    public static void BeanHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "SELECT * FROM SORT";
        Sort s = qr.query(con, sql, new BeanHandler<Sort>(Sort.class));
        System.out.println(s);

    }

    public static void BeanListHandler() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "select * from sort";
        List<Sort> list = qr.query(con, sql, new BeanListHandler<Sort>(Sort.class));
        for(Sort s  : list){
            System.out.println(s);
        }
    }

    public static void ColumnListHandler() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "select sname,sprice  from sort";
        List<Object> objs = qr.query(con, sql, new ColumnListHandler<Object>("sname"));
        for (Object obj : objs){
            System.out.println(obj);
        }
    }

    public static void ScalarHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "select count(*) from sort";
        long num = qr.query(con, sql, new ScalarHandler<Long>());
        System.out.println(num);
    }

    public static void MapHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "select * from sort";
        Map<String, Object> map = qr.query(con, sql, new MapHandler());
        for(String key : map.keySet()){
            System.out.println(key + "  "  + map.get(key));
        }
    }

    public static void mapListHandler() throws SQLException{
        QueryRunner qr = new QueryRunner();
        String sql = "select * from sort";
        List<Map<String, Object>> list =  qr.query(con, sql, new MapListHandler());
        for (Map<String, Object> map : list){
            System.out.println("###" + map.getClass());
            for (String key : map.keySet()){
                System.out.print(key + "  " + map.get(key));
            }
            System.out.println();
        }
    }
}


修改,增加,删除

package dbUtils;

import jdbcUtil.JDBCUtils;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;

import java.sql.Connection;
import java.sql.SQLException;

public class DBUtilsDemo {
    private static Connection con = JDBCUtils.getConnection();

    public static void main(String[] args) throws SQLException {
//        insert();
//        update();
        delete();
    }

    public static void insert() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql = "insert into sort (sname,sprice,sdesc) values(?,?,?)";
        Object[] objs = new Object[]{"体育用品",268.33,"购买体育用品"};
        int result = qr.update(con,sql,objs);
        System.out.println(result);
        DbUtils.closeQuietly(con);
    }

    public static void update() throws SQLException {
        QueryRunner qr = new QueryRunner();
        String sql= "update sort set sname=?,sprice=?,sdesc=? where sid=?";
        Object[] objs = new Object[]{"新家电",3000,"新型家电",1};
        int row = qr.update(con,sql,objs);
        System.out.println(row);
        DbUtils.closeQuietly(con);
    }

    public static void delete() throws SQLException{
        QueryRunner qr = new QueryRunner();
        int row = qr.update(con,"DELETE FROM SORT WHERE SID =?",1);
        System.out.println(row);
        DbUtils.closeQuietly(con);
    }
}

获取数据库连接对象的demo

package jdbcUtil;

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    private JDBCUtils(){}
    private static Connection con;
    static {
        try {
            /*FileInputStream fis  = new FileInputStream("src/database.properties");
            System.out.println(fis);*/
            ClassLoader cl = JDBCUtils.class.getClassLoader();
            InputStream is = cl.getResourceAsStream("database.properties");
            System.out.println(is);
            Properties pro = new Properties();
            pro.load(is);
            /*String driverClass = pro.getProperty("driverClass");
            String url = pro.getProperty("url");
            String username = pro.getProperty("username");
            String password = pro.getProperty("password");*/
            Class.forName("com.mysql.jdbc.Connection");
            String url = "jdbc:mysql://localhost:3306/shop?serverTimezone=GMT";
            String username = "root";
            String password = "admin";
            con = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e + "数据库连接失败了");
        }
    }
    /*
    * 定义静态方法 返回数据库连接对象
    * */
    public static Connection getConnection(){
        return con;
    }

    public static void close(Connection con, Statement statement, ResultSet rs){
        if(rs != null){
            try {
                rs.close();
            }catch (Exception e){

            }
        }
        if(statement != null){
            try {
                statement.close();
            }catch (Exception e){

            }
        }
        if(con != null){
            try {
                con.close();
            }catch (Exception e){

            }
        }
    }
    public static void close(Connection con, Statement statement){
        if(statement != null){
            try {
                statement.close();
            }catch (Exception e){

            }
        }
        if(con != null){
            try {
                con.close();
            }catch (Exception e){

            }
        }
    }
}

1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的数据库连接对象 而不像php asp那样 费时费力的不断重复的构建和析构这样的对象 DBUtils包括3个包: org apache commons dbutils org apache commons dbutils handlers org apache commons dbutils wrappers DBUtils封装了对JDBC的操作 简化了JDBC操作 可以少写代码 org apache commons dbutils DbUtils 关闭链接等操作 QueryRunner 进行查询的操作 org apache commons dbutils handlers ArrayHandler :将ResultSet中第一行的数据转化成对象数组 ArrayListHandler将ResultSet中所有的数据转化成List List中存放的是Object[] BeanHandler :将ResultSet中第一行的数据转化成类对象 BeanListHandler :将ResultSet中所有的数据转化成List List中存放的是类对象 ColumnListHandler :将ResultSet中某一列的数据存成List List中存放的是Object对象 KeyedHandler :将ResultSet中存成映射 key为某一列对应为Map Map中存放的是数据 MapHandler :将ResultSet中第一行的数据存成Map映射 MapListHandler :将ResultSet中所有的数据存成List List中存放的是Map ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object org apache commons dbutils wrappers SqlNullCheckedResultSet :对ResultSet进行操作 改版里面的值 StringTrimmedResultSet :去除ResultSet中中字段的左右空格 Trim ">1 对于数据表的读操作 他可以把结果转换成List Array Set等java集合 便于程序员操作; 2 对于数据表的写操作 也变得很简单(只需写sql语句) 3 可以使用数据源 使用JNDI 数据库连接池等技术来优化性能 重用已经构建好的 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITzhongzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值