利用回调技术实现的一个JDBC 查询操作(可依此进行扩展)

1.新建一个RowMapper接口:

2.创建一个回调接口:QueryCallBack

3.创建QueryHelper类

 

4.创建DatabaseManager

 

 

5.创建UserDaoImpl:

 

 

 

DatabaseManager类的executeQuery(final RowMapper rowMapper,String sql, Object[] parameters)方法

是核心,它将RowMapper和CallBack链接起来了。

 

首先调用QueryHelper类的executeQuery方法可以查询出所有满足查询参数的记录,获得最终的ResultSet.

 

然后QueryHelper自己并不去将ResultSet中的值组装成User对象,它将这个任务交给QueryCallback去做。

 

DatabaseManager创建的实现了接口QueryCallback的匿名内部类把上面这个任务担当下来了。但是这只是表面现象。因为它自己也没做事,它还是把数据的组装操作交给了RowMapper.

 

QueryCallback匿名内部类能访问外部类的final型的RowMapper.

 

最终还是落到了RowMapper头上。

 

在UserDaoImpl中,创建一个RowMapper的具体实现,并在创建的同时准备一个东西来装等下组装出来的User对象。所以就有了

new UserMapper(userList)

 

 

UserMapper实现的buildRow(ResultSet rs) 方法相当专一。一个rs对应一个User。(我不管外面的世界是怎么地!我就做这样简单的工作,呵呵!)

 

 

 

 

综上,通过此思路构建的查询操作,各个部分的操作职责分明。

 

通过此思路的解析,可以构建一个完整的CRUD操作工具集,利用的核心技术还是回调技术。

 

 

 

序列图如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值