Apache——DBUtils

Apache DBUtils提供了多种ResultSetHandle接口的实现类,如ArrayHandle、ArrayListHandle、BeanHandle等,用于方便地处理数据库查询结果,进行CRUD操作并获取总记录数。这些实现类能够将数据转换为对象数组、List、JavaBean或Map等结构。

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

需要导入的Jar包:commons-dbutils-1.2.jar

简单的CRUD+总记录数:

package com.kexin.demo;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.junit.Test;

import com.kexin.domain.Account;
import com.kexin.utils.JdbcUtils;

public class Demo1 {
    @Test
    public void insert() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "insert into account(id,name,money) values(?,?,?)";
        Object params[] = {1,"vvv",1000};
        qrunner.update(sql, params);
    }
    @Test
    public void update() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "update account set money =? where id =?";
        Object params[] ={900,1};
        qrunner.update(sql,params);
    }
    @Test
    public void delete() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "delete from account where id = ?";
        Object params[] = {1};
        qrunner.update(sql, params);
    }
    @SuppressWarnings("deprecation")
    @Test
    public void find() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql =  "select * from account where id = ?";
        Object params[] = {2};
        Account acc = (Account) qrunner.query(sql, params, new BeanHandler(Account.class));
        System.out.println(acc.getName()+"\t"+acc.getMoney());
    }
    @Test
    public void getAll() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "select * from account";
        @SuppressWarnings("unchecked")
        List<Account> list = (List<Account>) qrunner.query(sql, new BeanListHandler(Account.class));
        for(int i =0;i<list.size();i++){
            System.out.println(((Account)list.get(i)).getName()+"\t"+((Account)list.get(i)).getMoney());
        }
    }
    @Test
    public void batch() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "insert into account(name,money) values(?,?)";
        Object params[][] = {{"aaa",123},{"bbb",321},{"ccc",444}};
        qrunner.batch(sql, params);
    }
    @Test
    public void getRecords() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "select count(*) from account";
        Object rs[] = (Object[]) qrunner.query(sql, new ArrayHandler());
        int totalRecords = ((Long)rs[0]).intValue();
        System.out.println(totalRecords);
    }
    @Test
    public void getRecords1() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "select count(*) from account";
        int totalRecords = ((Long)qrunner.query(sql, new ScalarHandler())).intValue();
        System.out.println(totalRecords);
    }
}

ResultSetHandle接口的实现类:

  • ArrayHandle:把结果集中的第一行数据转成对象数组
  • ArrayListHandle:把结果集中的每一行数据都转成一个数组,再存放到List中
  • BeanHandle:将结果集中的每一行数据都封装到一个对应的JavaBean实例中
  • BeanListHandle:将结果集中的每一行数据都封装到一个对应的JavaBean对象中,存放到List中
  • ColumnListHandle:将结果集中的某一列数据存放到List中
  • KeyedHandle(name):将结果集中的每一行数据都封装到一个Map中,再把map存到一个map中,其key为指定的key
  • MapHandle:将结果集中的第一行数据封装到一个Map里,key是列名,value是对应的值
  • MapListHandle:将结果集中的每一行数据都放到map里,再存放到List中
package com.kexin.demo;

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

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.junit.Test;

import com.kexin.utils.JdbcUtils;

public class Demo2 {
    @Test
    public void TestArrayHandler() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql =  "select * from account where id = ?";
        Object params[] = {2};
        Object rs[] = (Object[]) qrunner.query(sql, params, new ArrayHandler());
        for(int i=0;i<rs.length;i++){
            System.out.print(rs[i]+"\t");
        }
    }
    @Test
    public void TestArrayListHandle() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql =  "select * from account";
        List list =  (List) qrunner.query(sql,new ArrayListHandler());
        for(int i=0;i<list.size();i++){
            System.out.print(((Object[])list.get(i))[0]+"\t");
        }
    }
    @Test
    public void TestColumnListHandle() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql =  "select * from account";
        List list =  (List) qrunner.query(sql,new ColumnListHandler("name"));
        for(int i=0;i<list.size();i++){
            System.out.print((list.get(i))+"\t");
        }
    }
    @Test
    public void TestKeyedHandle() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql =  "select * from account";
        Map map =  (Map) qrunner.query(sql,new KeyedHandler("id"));
        for(int i=0;i<map.size();i++){
            System.out.print(((Map)map.get(i+1)).get("name")+"\t");
        }
    }
    @Test
    public void TestMapHandle() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql =  "select * from account";
        Map map =  (Map) qrunner.query(sql,new MapHandler());
        System.out.print((map.get("name"))+"\t");
    }
    @Test
    public void TestMapListHandle() throws SQLException{
        QueryRunner qrunner = new QueryRunner(JdbcUtils.getDataSource());
        String sql =  "select * from account";
        List list =  (List) qrunner.query(sql,new MapListHandler());
        for(int i=0;i<list.size();i++){
            System.out.print(((Map)list.get(i)).get("name")+"\t");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小黄鸭and小黑鸭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值