亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sqlexecutor.java

?? 本套系統采用了業界當前最為流行的beanAction組件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
      hasMoreResults = moveToNextResultsIfPresent(stmt);
    }
    return rs;
  }

  private boolean moveToNextResultsIfPresent(Statement stmt) throws SQLException {
    boolean moreResults;
    // This is the messed up JDBC approach for determining if there are more results
    moreResults = !(((moveToNextResultsSafely(stmt) == false) && (stmt.getUpdateCount() == -1)));
    return moreResults;
  }

  private boolean moveToNextResultsSafely(Statement stmt) throws SQLException {
    if (!stmt.getConnection().getMetaData().supportsMultipleResultSets()) {
      return false;
    }
    return stmt.getMoreResults();
  }

  private void handleResults(RequestScope request, ResultSet rs, int skipResults, int maxResults, RowHandlerCallback callback) throws SQLException {
    try {
      request.setResultSet(rs);
      ResultMap resultMap = request.getResultMap();
      if (resultMap != null) {
        // Skip Results
        if (rs.getType() != ResultSet.TYPE_FORWARD_ONLY) {
          if (skipResults > 0) {
            rs.absolute(skipResults);
          }
        } else {
          for (int i = 0; i < skipResults; i++) {
            if (!rs.next()) {
              return;
            }
          }
        }

        // Get Results
        int resultsFetched = 0;
        while ((maxResults == SqlExecutor.NO_MAXIMUM_RESULTS || resultsFetched < maxResults) && rs.next()) {
          Object[] columnValues = resultMap.resolveSubMap(request, rs).getResults(request, rs);
          callback.handleResultObject(request, columnValues, rs);
          resultsFetched++;
        }
      }
    } finally {
      request.setResultSet(null);
    }
  }

  private void retrieveOutputParameters(RequestScope request, CallableStatement cs, ParameterMapping[] mappings, Object[] parameters, RowHandlerCallback callback) throws SQLException {
    for (int i = 0; i < mappings.length; i++) {
      BasicParameterMapping mapping = ((BasicParameterMapping) mappings[i]);
      if (mapping.isOutputAllowed()) {
        if ("java.sql.ResultSet".equalsIgnoreCase(mapping.getJavaTypeName())) {
          ResultSet rs = (ResultSet) cs.getObject(i + 1);
          ResultMap resultMap;
          if (mapping.getResultMapName() == null) {
            resultMap = request.getResultMap();
            handleOutputParameterResults(request, resultMap, rs, callback);
          } else {
            ExtendedSqlMapClient client = (ExtendedSqlMapClient) request.getSession().getSqlMapClient();
            resultMap = client.getDelegate().getResultMap(mapping.getResultMapName());
            DefaultRowHandler rowHandler = new DefaultRowHandler();
            RowHandlerCallback handlerCallback = new RowHandlerCallback(resultMap, null, rowHandler);
            handleOutputParameterResults(request, resultMap, rs, handlerCallback);
            parameters[i] = rowHandler.getList();
          }
          rs.close();
        } else {
          parameters[i] = mapping.getTypeHandler().getResult(cs, i + 1);
        }
      }
    }
  }

  private void registerOutputParameters(CallableStatement cs, ParameterMapping[] mappings) throws SQLException {
    for (int i = 0; i < mappings.length; i++) {
      BasicParameterMapping mapping = ((BasicParameterMapping) mappings[i]);
      if (mapping.isOutputAllowed()) {
        if (null != mapping.getTypeName() && !mapping.getTypeName().equals("")) { //@added
          cs.registerOutParameter(i + 1, mapping.getJdbcType(), mapping.getTypeName());
        } else {
          if (mapping.getNumericScale() != null && (mapping.getJdbcType() == Types.NUMERIC || mapping.getJdbcType() == Types.DECIMAL))
          {
            cs.registerOutParameter(i + 1, mapping.getJdbcType(), mapping.getNumericScale().intValue());
          } else {
            cs.registerOutParameter(i + 1, mapping.getJdbcType());
          }
        }
      }
    }
  }

  private void handleOutputParameterResults(RequestScope request, ResultMap resultMap, ResultSet rs, RowHandlerCallback callback) throws SQLException {
    ResultMap orig = request.getResultMap();
    try {
      request.setResultSet(rs);
      if (resultMap != null) {
        request.setResultMap(resultMap);

        // Get Results
        while (rs.next()) {
          Object[] columnValues = resultMap.resolveSubMap(request, rs).getResults(request, rs);
          callback.handleResultObject(request, columnValues, rs);
        }
      }
    } finally {
      request.setResultSet(null);
      request.setResultMap(orig);
    }
  }

  /**
   * Clean up any batches on the session
   *
   * @param session - the session to clean up
   */
  public void cleanup(SessionScope session) {
    Batch batch = (Batch) session.getBatch();
    if (batch != null) {
      batch.cleanupBatch(session);
      session.setBatch(null);
    }
  }

  private PreparedStatement prepareStatement(SessionScope session, Connection conn, String sql, Integer rsType) throws SQLException {
    SqlMapExecutorDelegate delegate = ((ExtendedSqlMapClient)session.getSqlMapExecutor()).getDelegate();
    if (session.hasPreparedStatementFor(sql)) {
      return session.getPreparedStatement((sql));
    } else {
      PreparedStatement ps = conn.prepareStatement(sql, rsType.intValue(), ResultSet.CONCUR_READ_ONLY);
      session.putPreparedStatement(delegate, sql, ps);
      return ps;
    }
  }

  private CallableStatement prepareCall(SessionScope session, Connection conn, String sql, Integer rsType) throws SQLException {
    SqlMapExecutorDelegate delegate = ((ExtendedSqlMapClient)session.getSqlMapExecutor()).getDelegate();
    if (session.hasPreparedStatementFor(sql)) {
      return (CallableStatement) session.getPreparedStatement((sql));
    } else {
      CallableStatement cs = conn.prepareCall(sql, rsType.intValue(), ResultSet.CONCUR_READ_ONLY);
      session.putPreparedStatement(delegate, sql, cs);
      return cs;
    }
  }

  private static PreparedStatement prepareStatement(SessionScope session, Connection conn, String sql) throws SQLException {
    SqlMapExecutorDelegate delegate = ((ExtendedSqlMapClient)session.getSqlMapExecutor()).getDelegate();
    if (session.hasPreparedStatementFor(sql)) {
      return session.getPreparedStatement((sql));
    } else {
      PreparedStatement ps = conn.prepareStatement(sql);
      session.putPreparedStatement(delegate, sql, ps);
      return ps;
    }
  }

  private CallableStatement prepareCall(SessionScope session, Connection conn, String sql) throws SQLException {
    SqlMapExecutorDelegate delegate = ((ExtendedSqlMapClient)session.getSqlMapExecutor()).getDelegate();
    if (session.hasPreparedStatementFor(sql)) {
      return (CallableStatement) session.getPreparedStatement((sql));
    } else {
      CallableStatement cs = conn.prepareCall(sql);
      session.putPreparedStatement(delegate, sql, cs);
      return cs;
    }
  }

  private static void closeStatement(SessionScope session, PreparedStatement ps) {
    if (ps != null) {
      if (!session.hasPreparedStatement(ps)) {
        try {
          ps.close();
        } catch (SQLException e) {
          // ignore
        }
      }
    }
  }

  /**
   * @param rs
   */
  private static void closeResultSet(ResultSet rs) {
    if (rs != null) {
      try {
        rs.close();
      } catch (SQLException e) {
        // ignore
      }
    }
  }

  private static void setStatementTimeout(MappedStatement mappedStatement, Statement statement) throws SQLException {
    if (mappedStatement.getTimeout() != null) {
      statement.setQueryTimeout(mappedStatement.getTimeout().intValue());
    }
  }

  //
  // Inner Classes
  //

  private static class Batch {
    private String currentSql;
    private List statementList = new ArrayList();
    private List batchResultList = new ArrayList();
    private int size;

    /**
     * Create a new batch
     */
    public Batch() {
      this.size = 0;
    }

    /**
     * Getter for the batch size
     *
     * @return - the batch size
     */
    public int getSize() {
      return size;
    }

    /**
     * Add a prepared statement to the batch
     *
     * @param request    - the request scope
     * @param conn       - the database connection
     * @param sql        - the SQL to add
     * @param parameters - the parameters for the SQL
     * @throws SQLException - if the prepare for the SQL fails
     */
    public void addBatch(RequestScope request, Connection conn, String sql, Object[] parameters) throws SQLException {
      PreparedStatement ps = null;
      if (currentSql != null && sql.hashCode() == currentSql.hashCode() && sql.length() == currentSql.length()) {
        int last = statementList.size() - 1;
        ps = (PreparedStatement) statementList.get(last);
      } else {
        ps = prepareStatement(request.getSession(), conn, sql);
        setStatementTimeout(request.getStatement(), ps);
        currentSql = sql;
        statementList.add(ps);
        batchResultList.add(new BatchResult(request.getStatement().getId(), sql));
      }
      request.getParameterMap().setParameters(request, ps, parameters);
      ps.addBatch();
      size++;
    }

    /**
     * TODO (Jeff Butler) - maybe this method should be deprecated in some release,
     * and then removed in some even later release.  executeBatchDetailed gives
     * much more complete information.
     * <p/>
     * Execute the current session's batch
     *
     * @return - the number of rows updated
     * @throws SQLException - if the batch fails
     */
    public int executeBatch() throws SQLException {
      int totalRowCount = 0;
      for (int i = 0, n = statementList.size(); i < n; i++) {
        PreparedStatement ps = (PreparedStatement) statementList.get(i);
        int[] rowCounts = ps.executeBatch();
        for (int j = 0; j < rowCounts.length; j++) {
          if (rowCounts[j] == Statement.SUCCESS_NO_INFO) {
            // do nothing
          } else if (rowCounts[j] == Statement.EXECUTE_FAILED) {
            throw new SQLException("The batched statement at index " + j + " failed to execute.");
          } else {
            totalRowCount += rowCounts[j];
          }
        }
      }
      return totalRowCount;
    }

    /**
     * Batch execution method that returns all the information
     * the driver has to offer.
     *
     * @return a List of BatchResult objects
     * @throws BatchException (an SQLException sub class) if any nested
     *                        batch fails
     * @throws SQLException   if a database access error occurs, or the drive
     *                        does not support batch statements
     * @throws BatchException if the driver throws BatchUpdateException
     */
    public List executeBatchDetailed() throws SQLException, BatchException {
      List answer = new ArrayList();
      for (int i = 0, n = statementList.size(); i < n; i++) {
        BatchResult br = (BatchResult) batchResultList.get(i);
        PreparedStatement ps = (PreparedStatement) statementList.get(i);
        try {
          br.setUpdateCounts(ps.executeBatch());
        } catch (BatchUpdateException e) {
          StringBuffer message = new StringBuffer();
          message.append("Sub batch number ");
          message.append(i + 1);
          message.append(" failed.");
          if (i > 0) {
            message.append(" ");
            message.append(i);
            message.append(" prior sub batch(s) completed successfully, but will be rolled back.");
          }
          throw new BatchException(message.toString(), e, answer, br.getStatementId(), br.getSql());
        }
        answer.add(br);
      }
      return answer;
    }

    /**
     * Close all the statements in the batch and clear all the statements
     *
     * @param session
     */
    public void cleanupBatch(SessionScope session) {
      for (int i = 0, n = statementList.size(); i < n; i++) {
        PreparedStatement ps = (PreparedStatement) statementList.get(i);
        closeStatement(session, ps);
      }
      currentSql = null;
      statementList.clear();
      batchResultList.clear();
      size = 0;
    }
  }

  private void setupResultObjectFactory(RequestScope request) {
    ExtendedSqlMapClient client = (ExtendedSqlMapClient) request.getSession().getSqlMapClient();
    ResultObjectFactoryUtil.setResultObjectFactory(client.getResultObjectFactory());
    ResultObjectFactoryUtil.setStatementId(request.getStatement().getId());
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清久久久久| 中文字幕一区av| 麻豆精品精品国产自在97香蕉| 欧美日本在线观看| 蜜桃视频在线观看一区二区| 欧美一区二区三区电影| 国产尤物一区二区| 欧美国产日韩亚洲一区| 99精品欧美一区| 亚洲综合久久av| 欧美一级黄色片| 国产成人精品亚洲日本在线桃色| 国产精品毛片大码女人| 色一区在线观看| 日韩va亚洲va欧美va久久| 精品福利一区二区三区| 国产69精品久久久久毛片| 亚洲欧洲中文日韩久久av乱码| 在线精品视频一区二区三四| 日本美女一区二区三区视频| 国产午夜精品一区二区三区嫩草| 91丨porny丨户外露出| 亚洲国产婷婷综合在线精品| 2020国产精品自拍| 99精品视频在线免费观看| 日日夜夜免费精品| 国产亚洲欧美中文| 欧美人狂配大交3d怪物一区| 国产一区二区三区在线观看精品 | 国产福利一区在线| 中文字幕一区二区三区在线播放| 色久优优欧美色久优优| 久久成人av少妇免费| 中文字幕人成不卡一区| 欧美一区二区三区性视频| 白白色亚洲国产精品| 男女性色大片免费观看一区二区| 国产免费成人在线视频| 欧美美女一区二区| 99re热这里只有精品视频| 麻豆中文一区二区| 亚洲一卡二卡三卡四卡五卡| 国产色综合一区| 欧美一区二区三区在| 色素色在线综合| 国产成人午夜99999| 天天影视涩香欲综合网| 中文字幕一区二区三区不卡| 91精品国产色综合久久ai换脸 | 一级精品视频在线观看宜春院| 久久综合五月天婷婷伊人| 欧美在线一区二区| 岛国精品一区二区| 狠狠久久亚洲欧美| 麻豆精品一区二区综合av| 一片黄亚洲嫩模| 国产精品久久看| 久久久高清一区二区三区| 日韩三级中文字幕| 在线播放日韩导航| 欧美四级电影网| 色哟哟精品一区| 色综合天天综合在线视频| 白白色亚洲国产精品| 国产成人aaa| 国产成人在线免费观看| 国产一区二区在线看| 免费高清成人在线| 青青国产91久久久久久| 亚洲午夜激情网站| 一区二区视频免费在线观看| 自拍偷拍亚洲综合| 国产精品卡一卡二| 国产精品成人一区二区三区夜夜夜| 精品国产免费久久 | 欧美日韩免费视频| 色悠悠亚洲一区二区| 色先锋资源久久综合| 一本色道久久综合亚洲aⅴ蜜桃| 99久久精品免费观看| 91丝袜美腿高跟国产极品老师 | 肉色丝袜一区二区| 日日摸夜夜添夜夜添国产精品 | 国产午夜亚洲精品午夜鲁丝片| 精品免费日韩av| 2021中文字幕一区亚洲| 久久综合色综合88| 久久九九久精品国产免费直播| 久久这里都是精品| 国产欧美日产一区| 亚洲视频一区二区免费在线观看| 《视频一区视频二区| 亚洲国产精品久久人人爱蜜臀| 亚州成人在线电影| 裸体歌舞表演一区二区| 韩国女主播成人在线| 成人动漫视频在线| 色乱码一区二区三区88| 欧美一区二区三区四区五区| 欧美大尺度电影在线| 久久久久久久久97黄色工厂| 亚洲欧洲精品一区二区三区| 怡红院av一区二区三区| 日韩成人免费电影| 国产成人精品三级麻豆| 色就色 综合激情| 4438x亚洲最大成人网| 久久午夜免费电影| 一级日本不卡的影视| 精品一区二区三区影院在线午夜| 国产传媒欧美日韩成人| 色成年激情久久综合| 欧美一级欧美一级在线播放| 国产精品免费久久久久| 五月天激情综合网| 成人久久视频在线观看| 欧美亚一区二区| www久久久久| 亚洲国产精品综合小说图片区| 激情综合色综合久久综合| 99国产精品久久久久| 欧美一三区三区四区免费在线看 | 精品国产凹凸成av人网站| 国产精品麻豆99久久久久久| 性做久久久久久免费观看欧美| 国内精品伊人久久久久av影院 | 亚洲va中文字幕| 国产成人免费视频精品含羞草妖精| 欧美日韩中文国产| 国产日韩欧美综合一区| 免费在线观看视频一区| 99久久婷婷国产精品综合| 日韩欧美三级在线| 亚洲第一成人在线| 91在线porny国产在线看| 久久综合久久鬼色中文字| 亚洲一区视频在线| 成人黄色大片在线观看| 亚洲精品一区在线观看| 日韩电影一二三区| 在线观看网站黄不卡| 中文字幕制服丝袜一区二区三区| 琪琪久久久久日韩精品| 欧美自拍偷拍午夜视频| 亚洲欧洲美洲综合色网| 国产黑丝在线一区二区三区| 91精品国产综合久久久久久 | 国产精品伦理在线| 精品在线一区二区| 欧美一区二区三区精品| 性做久久久久久免费观看| 91黄色免费网站| 亚洲男女一区二区三区| 波多野结衣精品在线| 国产欧美一二三区| 国产精品资源站在线| 久久久亚洲国产美女国产盗摄| 奇米亚洲午夜久久精品| 91精品久久久久久久91蜜桃| 亚洲成人tv网| 欧美久久一二区| 日韩影院在线观看| 欧美福利视频一区| 丝袜亚洲另类丝袜在线| 欧美日韩国产一区| 日韩成人午夜精品| 日韩欧美一级特黄在线播放| 日本成人中文字幕| 欧美成人r级一区二区三区| 看片的网站亚洲| xfplay精品久久| 国产高清不卡一区| 国产精品国产自产拍高清av王其| 成人av在线一区二区三区| 国产精品午夜免费| 色欧美片视频在线观看| 一区二区三区在线视频观看58 | 欧美久久久一区| 亚洲国产精品久久久久婷婷884 | 一区二区三区资源| 欧美色图免费看| 毛片av一区二区| 欧美激情在线观看视频免费| eeuss影院一区二区三区| 亚洲欧美另类综合偷拍| 欧美视频在线一区| 久久精品二区亚洲w码| 久久精品欧美一区二区三区不卡| 风流少妇一区二区| 一区二区三区成人在线视频| 欧美日韩精品系列| 国产一区二区精品久久91| 亚洲国产成人在线| 在线免费观看视频一区| 日本伊人精品一区二区三区观看方式| 精品国产亚洲一区二区三区在线观看| 成人性生交大合| 亚洲午夜久久久久久久久久久| 精品嫩草影院久久| 99久久免费国产|