在处理ResultSet时,不同的方法处理的方式是不一样的,但在继承的时候,rowMapper方法只能以一种方式实现,因此可以将对ResultSet处理的部分单独提取成一个抽象的部分,在不同的方法需要处理的时候,各自以自己的方式进行定义。
1、定义一个策略接口RowMapper
package cn.itcast.jdbc.dao.refactor;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 策略接口
*/
public interface RowMapper {
/**
* 策略方法
* @param rs
* @return
* @throws SQLException
*/
public Object mapRow(ResultSet rs) throws SQLException;
}
2、定义Dao模板类
package cn.itcast.jdbc.dao.refactor;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import cn.itcast.jdbc.JdbcUtils;
import cn.itcast.jdbc.dao.DaoException;
/**
* 自定义Dao处理结果集的模板方法
*/
public class MyDaoTemplate {
/**
* 执行查询操作的模板方法
* @param sql
* @param args
* @param rowMapper
* @return
*/