dbutils框架的使用(一)

DBUtils框架是对JDBC编码进行简化处理的轻量级框架,可以把结果集转换成map、list等集合形式。

QueryRunner

1、构造方法:
QueryRunner():默认构造方法
QueryRunner(DataSource ds):需要一个数据源

例如:private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
2、具体方法:
批处理:
batch(Connection conn, String sql, Object[][] params):使用默认构造方法时
batch(String sql, Object[][] params):
Object[][]params:高维:执行的语句的条数  低维:每条语句需要的参数

例:

@Test
public void testBatch()throws Exception{
		
	Object params[][] = new Object[10][];
	for(int i=0;i<params.length;i++){
		params[i] = new Object[]{i+1,"aaa"+(i+1)};//每条记录的参数
	}
	qr.batch("insert into t3 values(?,?)", params);
}

查询:
<T> T query(String sql, ResultSetHandler<T> rsh, Object... params)
query(Connection conn,String sql, ResultSetHandler<T> rsh, Object... params)

例如

// ArrayHandler:适用于结果集只有一条结果的情况。返回Obejct[],数组中的元素就是记录的每列数据。
@Test
public void test1() throws Exception {
  Object values[] = qr.query("select * from t3", new ArrayHandler());
  for (Object obj : values)
    System.out.println(obj);
}
update:DML INSERT UPDATE DELETE
update(String sql, Object... params)
update(Connection conn,String sql, Object... params)

qr.update("insert into student values(?,?,?)", 1,"wf",new Date());


结果处理器

ArrayHandler :适用于结果集中只有一条记录的情况,返回Object[],数组中的元素就是记录的每列数据

ArrayListHandler:适用于结果集中有多条结果的情况。返回的是一个List<Object[]>,List封装了记录,Object[]每条记录的每列数据。

也就是说将ResultSet中所有的数据转化成List,List中存放的是Object[]

BeanHandler :将ResultSet中第一行的数据转化成类对象

BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象

ColumnListHandler :适用于取某一列的值。返回的是List<Object>,集合中就是该列中的数据。

也就是将ResultSet中某一列的数据存成List,List中存放的是Object对象

KeyedHandler :适用于结果中有多条的情况。返回的是一个Map<Object,Map<String,Object>>。

MapHandler :将ResultSet中第一行的数据存成Map映射

MapListHandler :适用于结果有多条的情况。返回List<Map<String,Object>>,List封装了所有的记录,每条记录封装到Map中,key是字段名,value是字段值。

ScalarHandler :适用于结果中只有一行和只有一列的情况。返回的是一个Object。

例如:

// MapListHandler:适用于结果有多条的情况。List<Map<String,Object>>.List封装了所有的记录,每条记录封装到Map中,key是字段名,value,字段值。
	@Test
	public void test6() throws Exception {
		List<Map<String, Object>> list = qr.query("select * from t3",
				new MapListHandler());
		for (Map<String, Object> map : list) {
			System.out.println("----------------");
			for (Map.Entry<String, Object> sme : map.entrySet()) {
				System.out.println(sme.getKey() + "=" + sme.getValue());
			}
		}
	}
// ArrayListHandler:适用于结果集中有多条结果的情况。返回的是一个List<Object[]>,List封装了记录,Object[]每条记录的每列数据。
@Test
public void test2() throws Exception {
   List<Object[]> records = qr.query("select * from t3",new ArrayListHandler());
   for (Object[] values : records) {
     System.out.println("------------------");
     for (Object obj : values)
       System.out.println(obj);
   }
}
// KeyedHandler:适用于结果中有多条的情况。返回的是一个Map<Object,Map<String,Object>>。
@Test
public void test4() throws Exception {
  Map<Object, Map<String, Object>> bmap = qr.query("select * from t3",new KeyedHandler("id"));
  for (Map.Entry<Object, Map<String, Object>> bme : bmap.entrySet()) {
        System.out.println("----------------");
        for (Map.Entry<String, Object> sme : bme.getValue().entrySet()) {
            System.out.println(sme.getKey() + "=" + sme.getValue());
        }
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值