【DBUtils学习】之对数据库查询

QueryRunner实现数据查询:public <T> T query(String sql,ResultSetHandler<T> rsh,Object... params)throws SQLException;
1.古老查询:
示例代码:
		public void query1(){
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		ComboPooledDataSource pool=new ComboPooledDataSource();
		List<Account> list=new ArrayList<Account>();
		try{
			conn=pool.getConnection();
			ps=conn.prepareStatement("select * from account where money>?");
			ps.setInt(1, 100);
			rs=ps.executeQuery();
			while(rs.next()){
				Account account=new Account();
				account.setId(rs.getInt("id"));
				account.setMoney(rs.getInt("money"));
				account.setName(rs.getString("name"));
				list.add(account);
			}
			System.out.println(list);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			DbUtils.closeQuietly(conn, ps, rs);
		}
	}

2.QueryRunner.query()查询:
示例代码:
		public void query2() throws SQLException{
		QueryRunner runner=new QueryRunner(new ComboPooledDataSource());
		List<Account> list=runner.query("select * from account where money>?", new ResultSetHandler<List<Account>>(){


			public List<Account> handle(ResultSet rs) throws SQLException {//回掉函数,处理结果集数据
				List<Account> list=new ArrayList<Account>();
				while(rs.next()){
					Account account=new Account();
					account.setId(rs.getInt("id"));
					account.setMoney(rs.getInt("money"));
					account.setName(rs.getString("name"));
					list.add(account);
				}
				return list;
			}
			
		},999 );//第三个参数为可变参数,可以有多个参数		
		System.out.println(list);		
	}

3.自己在MyQueryRunner类中定义query()方法:(MyQueryRunner见前一篇文章)

方法代码为:

public <T> T query(String sql,ResultSetHandler<T> handler,Object ...objs) throws Exception{
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try{
			conn = source.getConnection();
			ps = conn.prepareStatement(sql);
			//--利用参数元数据设置参数
			ParameterMetaData metaData = ps.getParameterMetaData();
			int count = metaData.getParameterCount();
			for(int i = 1;i<=count;i++){
				ps.setObject(i, objs[i-1]);
			}
			rs = ps.executeQuery();
			//--框架中不知道怎么处理结果集,回调用户传入的结果集处理逻辑,处理结果集
			return handler.handle(rs);
		}catch (Exception e) {
			throw e;
		} finally{
			DbUtils.closeQuietly(conn, ps, rs);
		}
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值