| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package jnpf.database.plugins;
- import jnpf.database.util.ResetSetHolder;
- import org.apache.ibatis.executor.resultset.ResultSetHandler;
- import org.apache.ibatis.plugin.Interceptor;
- import org.apache.ibatis.plugin.Intercepts;
- import org.apache.ibatis.plugin.Invocation;
- import org.apache.ibatis.plugin.Signature;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- /**
- * Mybatis ResultSet拦截器
- * @see ResetSetHolder
- * @author JNPF开发平台组
- * @user N
- * @copyright 引迈信息技术有限公司
- * @date 2022/10/14 16:29
- */
- @Intercepts({@Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class})})
- public class ResultSetInterceptor implements Interceptor {
- @Override
- public Object intercept(Invocation invocation) throws Throwable {
- Object[] args = invocation.getArgs();
- Statement statement = (Statement) args[0];
- ResultSet rs = getFirstResultSet(statement);
- if (rs != null) {
- ResetSetHolder.setResultSet(rs);
- }
- Object result;
- try{
- result = invocation.proceed();
- }finally{
- ResetSetHolder.clear();
- }
- return result;
- }
- private ResultSet getFirstResultSet(Statement stmt) throws SQLException {
- ResultSet rs = stmt.getResultSet();
- while (rs == null) {
- if (stmt.getMoreResults()) {
- rs = stmt.getResultSet();
- } else if (stmt.getUpdateCount() == -1) {
- break;
- }
- }
- return rs;
- }
- }
|