image-20220418233415695

  • ResultSetHandler:结果集处理器
  • ResultContext:结果提出
  • ResultHandler:结果处理器

ResultSetHandler

1
2
3
4
5
6
7
public interface ResultSetHandler {
//包装结果集
<E> List<E> handleResultSets(Statement stmt) throws SQLException;
//处理存储过程输出参数的
void handleOutputParameters(CallableStatement cs) throws SQLException;

}

DefaultResultSetHandler,在默认的情况下都是通过这个类进行处理的。这个实现有些复杂,它涉及使用JAVASSIST 或者CGLIB作为延迟加载,然后通过typeHandlerObjectFactory进行组装结果再返回

ResultContext

控制结果的获取

1
2
3
4
5
6
7
8
9
10
11
public interface ResultContext<T> {
//当前结果
T getResultObject();
//当前的数量
int getResultCount();
//当前是否停止
boolean isStopped();
//停止
void stop();

}

ResultHandler

纯粹对应的值这个默认实现只是把结果放入list中

1
2
3
4
5
public interface ResultHandler<T> {

void handleResult(ResultContext<? extends T> resultContext);

}