日期:2014-05-16  浏览次数:20457 次

Spring对JDBC封装时使用的一种CallBack来参数化一个操作的模式

Spring对JDBC的封装避免了大量的JDBC低级操作,简化了代码,下面我们看看Spring除
了使用Template方法模式来简化我们编写的代码还是用了什么技巧。Spring使用了一种
叫做CallBackHandler的接口,你可以很容易扩展这个接口来获得想要查询到的结果,下
面举一个获得行信息的一个CallBackHandler,然后StringHandler实现获取查询到的String
的例子:

interface ?RowCallBackHandler ... {
????
public ? void ? abstract ?processRow(ResultSet?rs) throws ?SQLException;
}


class ?StringHandler? implements ?RowCallBackHandler ... {
????
private ?List?list;
????
public ? void ?processRow(ResultSet?rs) throws ?SQLException; ... {
????????list.add(rs.getString(
1 ));
????}

????
????
public ?String[]?getStrings() ... {
????
return ?(String[])list.toArray( new ?String[list.size()]))
????}

}


public ? class ??JdbcTemplate ... {
????
// ...other?code