DbUtils组件的使用小指南

一,概述

1)commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本较低,并且使用dbutils能极大简化jdbc的代码编写量,同时也不会影响程序的性能.

2)去官网下载组件,将相应jar包引入到项目中.我导入的是commons-dbutils-1.6.jar这个jar包.

二,查询

1)查询:自定义结果集封装对象

@Test
	public void testQuery() throws Exception {
		String sql = "select * from dept where id = ?";

		// 1,获得连接
		conn = JdbcUtils.getConnection();

		// 2,创建DbUtils核心工具类对象
		QueryRunner qr = new QueryRunner();

		// 3,查询--第四个参数12对应是占位符的数据,就是id=12
		DeptBean deptBean = qr.query(conn, sql,
				new ResultSetHandler<DeptBean>() {
					@Override
					public DeptBean handle(ResultSet rs) throws SQLException {
						if (rs.next()) {
							// 如果有数据,就进来了
							DeptBean bean = new DeptBean();
							bean.setId(rs.getInt("id"));
							bean.setDeptName(rs.getString("deptName"));

							return bean;
						}
						return null;
					}
				}, 12);

		// 4,关闭资源
		DbUtils.close(conn);
		// 输出数据
		System.out.println(deptBean.toString());
	}
输出结果:Dept [id=12, deptName=营销部]
JdbcUtils一个获取连接的工具类,在我自己的一篇博客里介绍过.DeptBean是一个标准的javabean,有id(int)和deptName(String)两个属性,dept是数据库中的一张表,对应DeptBean的两个属性.上面代码中,主要就是通过核心工具类QueryRunner的一个方法实现自定义结果集封装对象.然后返回.

2)使用组件提供的结果集封装数据

@Test
	public void testQueryOne() throws Exception {
		String sql = "select * from dept where id = ?";

		// 1,获得连接
		conn = JdbcUtils.getConnection();

		// 2,创建DbUtils核心工具类对象
		QueryRunner qr = new QueryRunner();

		// 3,查询--第四个参数16对应是占位符的数据
		DeptBean deptBean = qr.query(conn, sql, new BeanHandler<DeptBean>(
				DeptBean.class), 16);

		// 4,关闭资源
		DbUtils.close(conn);

		if (deptBean != null) {
			// 如果有数据就打印
			System.out.println(deptBean.toString());
		}
	}
主要就是通过BeanHandler来实现数据的封装.

3)BeanHandler的加强版-->BeanListHandler,返回一个List集合

@Test
	public void testQueryMany() throws Exception {
		String sql = "select * from dept";

		conn = JdbcUtils.getConnection();

		QueryRunner qr = new QueryRunner();

		List<DeptBean> list = qr.query(conn, sql,
				new BeanListHandler<DeptBean>(DeptBean.class));

		// 关闭资源
		DbUtils.close(conn);

		for (Object obj : list) {
			System.out.println(obj.toString());
		}
	}

4)不止上面那些好用的方法

@Test
	// ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
	// ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
	// ScalarHandler 查询返回结果记录的第一行的第一列 (在聚合函数统计的时候用)
	// MapHandler 查询返回结果的第一条记录封装为map
	public void testArray() throws Exception {
		String sql = "select * from admin";
		conn = JdbcUtils.getConnection();
		QueryRunner qr = new QueryRunner();
		// 查询
		// Object[] obj = qr.query(conn, sql, new ArrayHandler());
		// List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
		// Long num = qr.query(conn, sql, new ScalarHandler<Long>());
		Map<String, Object> map = qr.query(conn, sql, new MapHandler());

		conn.close();
	}
还有很多,可翻看官方文档.但是最常用的就是BeanHandler和BeanListHandler...

三,更新(删除,插入,修改)

1)删除与插入

//连接对象
	private Connection conn=null;
	
	/**
	 * 更新
	 * @throws Exception
	 */
	@Test
	public void testUpdate() throws Exception {
		String sql="delete from dept where id =?";
		
		//1,获得连接
		conn=JdbcUtils.getConnection();
		
		//2,创建DbUtils核心工具类对象
		QueryRunner qr=new QueryRunner();
		
		//3,执行操作,13就代表占位符所表示的参数
		qr.update(conn, sql, 13);
		
		//4,关闭连接
		DbUtils.close(conn);
	}
	
	/**
	 * 批处理
	 * @throws Exception
	 */
	@Test
	public void testBatch() throws Exception {
		String sql="insert into dept(deptName) values(?)";
		
		//1,获得连接
		conn=JdbcUtils.getConnection();
		
		//2.创建DbUtils核心工具类对象
		QueryRunner qr=new QueryRunner();
		
		//3,批量插入,注意第三个参数是二维数组
		qr.batch(conn, sql, new Object[][]{{"宣传部2017"},{"战略部"}});
		
		DbUtils.close(conn);
	}
	

四,总结

某程序猿:哥,你上面粘的代码了少了修改的啊?只有插入和删除...本人:就当是课后作业吧.



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值