JavaEE之DBUtils工具

DBUtils

    DBUtils是Apache的工具,是一个对jdbc的简单封装的工具。提供了一些通用的jdbc操作方法。

使用步骤:

1)导入jar包
commons-dbutils-1.2.jar
2)使用的API
QueryRunner类: 通过此类可以执行更新操作或者查询操作。
update(.....): 用于更新操作(DDL、DML)
query(.....): 用于查询操作(DQL)
ResultSetHandler接口:用于封装查询之后的结果。
   Object handle(ResultSet rs)  : 用于封装数据

常用的实现类:
ArrayHandler: 把结果集的第一行的数据封装成对象数组。
ArrayListHandler:把结果集的每一行数据封装对象数组,把这个对象数组放入List中
BeanHandler: 把结果集的第一行数据封装成javabean
BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入List中
ScalarHandler: 把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max())

如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类

/**
 * dbutils执行查询操作
 * @author chenzuyi
 *
 */
public class Demo2 {
	/**
	 * ArrayHandler: 把结果集的第一行的数据封装成对象数组。
	 */
	@Test
	public void test1() throws Exception{
		ComboPooledDataSource ds = new ComboPooledDataSource();
		//1.创建QueryRunner
		QueryRunner qr = new QueryRunner(ds);
		//2.执行sql
		Object[] arr = (Object[])qr.query("select * from student where id=?", new ArrayHandler(),new Object[]{2});
		for(Object obj:arr){
			System.out.println(obj);
		}
	}
	
	/**
	 * ArrayListHandler: 把结果集的每一行数据封装对象数组,把这个对象数组放入List中
	 * @throws Exception
	 */
	@Test
	public void test2() throws Exception{
		ComboPooledDataSource ds = new ComboPooledDataSource();
		//1.创建QueryRunner
		QueryRunner qr = new QueryRunner(ds);
		//2.执行sql
		List<Object[]> list = (List<Object[]>)qr.query("select * from student", new ArrayListHandler());
		for(Object[] arr:list){//一行
			//一列
			for(Object obj:arr){
				System.out.print(obj+"\t");
			}
			System.out.println();
		}
	}
	
	/**
	 * BeanHandler: 把结果集的第一行数据封装成javabean
	 * 约定前提: 表的字段名称和javabean的属性名称保持一致!!
	 */
	@Test
	public void test3() throws Exception{
		ComboPooledDataSource ds = new ComboPooledDataSource();
		//1.创建QueryRunner
		QueryRunner qr = new QueryRunner(ds);
		//2.执行sql
		Student student = (Student)qr.query("select * from student", new BeanHandler(Student.class));
		System.out.println(student);
	}
	
	/**
	 * BeanListHandler: 把结果集的每一行数据封装成javabean,把这个javabean放入LIst中
	 * 	约定前提: 表的字段名称和javabean的属性名称保持一致!!
	 */
	@Test
	public void test4() throws Exception{
		ComboPooledDataSource ds = new ComboPooledDataSource();
		//1.创建QueryRunner
		QueryRunner qr = new QueryRunner(ds);
		//2.执行sql
		List<Student> list = (List<Student>)qr.query("select * from student", new BeanListHandler(Student.class));
		for (Student student : list) {
			System.out.println(student);
		}
	}
	
	/**
	 * ScalarHandler: 把结果集的第一行第一列取出。通常用于聚合函数查询。例如(count()/max())
	 */
	@Test
	public void test5() throws Exception{
		ComboPooledDataSource ds = new ComboPooledDataSource();
		//1.创建QueryRunner
		QueryRunner qr = new QueryRunner(ds);
		//2.执行sql
		Long count = (Long)qr.query("select count(id) from student", new ScalarHandler(1));
		System.out.println("行数: "+count);
	}
	
	/**
	 * 如果表的字段名称和javabean的属性名称不一致时,需要自定义ResultSetHandler的实现类
	 */
	@Test
	public void test6() throws Exception{
		ComboPooledDataSource ds = new ComboPooledDataSource();
		//1.创建QueryRunner
		QueryRunner qr = new QueryRunner(ds);
		List<Student> list = (List<Student>)qr.query("select * from student2", new MyStudentHandler());
		for (Student student : list) {
			System.out.println(student);
		}
	}
}

/**
 * 自定义ResultSetHandler
*/
class MyStudentHandler implements ResultSetHandler{

	@Override
	public Object handle(ResultSet rs) throws SQLException {
		List<Student> list = new ArrayList<Student>();
		while(rs.next()){
			Student s = new Student();
			s.setId(rs.getInt("sid"));
			s.setName(rs.getString("sname"));
			s.setAge(rs.getInt("sage"));
			s.setAddress(rs.getString("saddress"));
			list.add(s);
		}
		return list;
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值