JDBC----学习(16)----DBUtils工具类 ResultSetHandler

Apache Commons DBUtils 是一个简单的 JDBC 封装库,可以减少编写 JDBC 代码的工作。QueryRunner 和 ResultSetHandler 类是其核心,提供便利的数据处理。本文介绍了如何使用 BeanHandler、BeanListHandler 和 MapHandler 处理查询结果,特别是处理数据库字段与 Java Bean 属性映射的问题。

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

commons-dbutils Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,

 并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能

API介绍:

     –org.apache.commons.dbutils.QueryRunner

    –org.apache.commons.dbutils.ResultSetHandler

以下介绍ResultSetHandler的几个常用的Handler(结果处理理类)

1.BeanHandler(注意当查询的字段在数据库中时多个单词组成的字段时,必须通过指定别名来实现数据库字段和Javabean

                                 属性之间的映射,否则最终Javabean的属性值为null)

/**
 * BeanHandler:把结果集的第一条记录转为创建BeanHandler对象时传入的class参数对应的对象。
 * @throws Exception
 */
@Test
public void testBeanHanlder() throws Exception {
	Connection connection = null;
	try {
		connection = JDBCTools.getConnection();
		String sql = "select id,name,email,brith,core from Customerss where id = ?";
		Customers customers=(Customers) qr.query(connection, sql, new BeanHandler(Customers.class), 2);
		System.out.println(customers);
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		JDBCTools.colse(null, connection, null);
	}
}
@Test
public void testBeanHanlder1() throws Exception {
	Connection connection = null;
	try {
		connection = JDBCTools.getConnection();
		String sql = "select KINO_ID kinoId,SEQ_NO seqNo,"
				+ "FIELD_ID fieldId,"
				+ "FIELD_LABEL fieldLable,"
				+ "VISIBLE_KBN visibleKbn,"
				+ "NES_KBN nesKbn,"
				+ "DEFAULT_VALUE defautValue,"
				+ "BIKO  biko "
				+ "from ACTL_INPUT where KINO_ID ='Afmm1010' and  SEQ_NO=?";
		ACTL actl = (ACTL) qr.query(connection, sql, new BeanHandler(ACTL.class), 2);
		System.out.println(actl);
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		JDBCTools.colse(null, connection, null);
	}
}

2.BeanListHandler

/**
 * BeanListHandler:把结果集转化为一个list,该list不为null,但是可能为空集合(size= 0)
 * 若SQL语句的确能够查询到记录,list中存放的创建BeanListHandler传入的class对象对应的对象。
 * @throws Exception
*/
@Test
public void testBeanListHanlder() throws Exception {
	Connection connection = null;
	try {
		connection = JDBCTools.getConnection();
		String sql = "select id,name,email,brith,core from Customerss ";
		List<Customers> list=(List<Customers>) qr.query(connection, sql, new BeanListHandler(Customers.class));
		System.out.println(list);
	} catch (Exception e) {
	e.printStackTrace();
		} finally {
			JDBCTools.colse(null, connection, null);
	}
}

3.MapHandler

/**
* MapHandler:返回SQL对应的第一条记录对应的map对象
 * @throws Exception
 */
@Test
public void testMapHanlder() throws Exception {
	Connection connection = null;
	try {
		connection = JDBCTools.getConnection();
		String sql = "select id,name,email,brith,core from Customerss ";
		Map<String,Object> map= qr.query(connection, sql, new MapHandler());
			System.out.println(map);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCTools.colse(null, connection, null);
		}
	}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值