MyBatis 用户可以通过自定义 ResultHandler 来定制和增强 ResultSet。
具体实现方式是:
- 实现接口 ResultHandler:
public interface ResultHandler {
void handleResult(ResultContext context);
}
- 实现 handleResult() 方法:
public void handleResult(ResultContext context) {
ResultSet rs = context.getResultSet();
// ... 处理rs,做增强处理
while (rs.next()) {
// ...
}
}
- 在 SQL 映射中使用:
<select id="selectAllUsers" resultHandler="com.itzhimei.MyResultHandler">
select * from users
</select>
- 在 Java 代码中调用:
sqlSession.selectList("selectAllUsers", null);
- MyBatis 会调用自定义的 ResultHandler 处理结果集。
这样用户就可以:
- 在程序中读取 ResultSet 而不是映射为对象。
- 实现多ResultSet返回。
- 实现缓存 ResultSet 等功能。
从而对原生的 ResultSet 进行增强处理。