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

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

?? basicresultmap.java

?? 本套系統采用了業界當前最為流行的beanAction組件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
    for (int i = 0; i < getResultMappings().length; i++) {
      BasicResultMapping mapping = (BasicResultMapping) getResultMappings()[i];
      errorContext.setMoreInfo(mapping.getErrorString());
      if (mapping.getStatementName() != null) {
        if (resultClass == null) {
          throw new SqlMapException("The result class was null when trying to get results for ResultMap named " + getId() + ".");
        } else if (Map.class.isAssignableFrom(resultClass)) {
          Class javaType = mapping.getJavaType();
          if (javaType == null) {
            javaType = Object.class;
          }
          columnValues[i] = getNestedSelectMappingValue(request, rs, mapping, javaType);
        } else if (DomTypeMarker.class.isAssignableFrom(resultClass)) {
          Class javaType = mapping.getJavaType();
          if (javaType == null) {
            javaType = DomTypeMarker.class;
          }
          columnValues[i] = getNestedSelectMappingValue(request, rs, mapping, javaType);
        } else {
          Probe p = ProbeFactory.getProbe(resultClass);
          Class type = p.getPropertyTypeForSetter(resultClass, mapping.getPropertyName());
          columnValues[i] = getNestedSelectMappingValue(request, rs, mapping, type);
        }
        foundData = foundData || columnValues[i] != null;
      } else if (mapping.getNestedResultMapName() == null) {
        columnValues[i] = getPrimitiveResultMappingValue(rs, mapping);
        if (columnValues[i] == null) {
          columnValues[i] = doNullMapping(columnValues[i], mapping);
        }
        else  {
          foundData = true;
        }
      }
    }

    request.setRowDataFound(foundData);

    return columnValues;
  }

  public Object setResultObjectValues(RequestScope request, Object resultObject, Object[] values) {

    String ukey = (String)getUniqueKey(request.getCurrentNestedKey(), values);

    Map uniqueKeys = request.getUniqueKeys(this);

    request.setCurrentNestedKey(ukey);
    if (uniqueKeys != null && uniqueKeys.containsKey(ukey)) {
      // Unique key is already known, so get the existing result object and process additional results.
      resultObject = uniqueKeys.get(ukey);
      applyNestedResultMap(request, resultObject, values);
      resultObject = NO_VALUE;
    } else if (ukey == null || uniqueKeys == null || !uniqueKeys.containsKey(ukey)) {
      // Unique key is NOT known, so create a new result object and then process additional results.
      resultObject = dataExchange.setData(request, this, resultObject, values);
      // Lazy init key set, only if we're grouped by something (i.e. ukey != null)
      if (ukey != null) {
        if (uniqueKeys == null) {
          uniqueKeys = new HashMap();
          request.setUniqueKeys(this, uniqueKeys);
        }
        uniqueKeys.put(ukey, resultObject);
      }
      applyNestedResultMap(request, resultObject, values);
    } else {
      // Otherwise, we don't care about these results.
      resultObject = NO_VALUE;
    }

    return resultObject;
  }

  private void applyNestedResultMap(RequestScope request, Object resultObject, Object[] values) {
    if (resultObject != null && resultObject != NO_VALUE) {
      if (nestedResultMappings != null) {
        for (int i = 0, n = nestedResultMappings.size(); i < n; i++) {
          BasicResultMapping resultMapping = (BasicResultMapping) nestedResultMappings.get(i);
          setNestedResultMappingValue(resultMapping, request, resultObject, values);
        }
      }
    }
  }

  /**
   * Some changes in this method for IBATIS-225:
   * <ul>
   *   <li>We no longer require the nested property to be a collection.  This
   *       will allow reuses of resultMaps on 1:1 relationships</li>
   *   <li>If the nested property is not a collection, then it will be
   *       created/replaced by the values generated from the current row.</li>
   * </ul>
   * 
   * @param mapping
   * @param request
   * @param resultObject
   * @param values
   */
  protected void setNestedResultMappingValue(BasicResultMapping mapping, RequestScope request, Object resultObject, Object[] values) {
    try {

      String resultMapName = mapping.getNestedResultMapName();
      ResultMap resultMap = getDelegate().getResultMap(resultMapName);
      // get the discriminated submap if it exists
      resultMap = resultMap.resolveSubMap(request, request.getResultSet());
      
      Class type = mapping.getJavaType();
      String propertyName = mapping.getPropertyName();

      Object obj = PROBE.getObject(resultObject, propertyName);

      if (obj == null) {
        if (type == null) {
          type = PROBE.getPropertyTypeForSetter(resultObject, propertyName);
        }
        
        try {
          // create the object if is it a Collection.  If not a Collection
          // then we will just set the property to the object created
          // in processing the nested result map
          if (Collection.class.isAssignableFrom(type)) {
            obj = ResultObjectFactoryUtil.createObjectThroughFactory(type);
            PROBE.setObject(resultObject, propertyName, obj);
          }
        } catch (Exception e) {
          throw new SqlMapException("Error instantiating collection property for mapping '" + mapping.getPropertyName() + "'.  Cause: " + e, e);
        }
      }

      values = resultMap.getResults(request, request.getResultSet());
      if (request.isRowDataFound()) {
        Object o = resultMap.setResultObjectValues(request, null, values);
        if (o != NO_VALUE) {
          if (obj != null && obj instanceof Collection) {
            ((Collection) obj).add(o);
          } else {
            PROBE.setObject(resultObject, propertyName, o);
          }
        }
      }
    } catch (SQLException e) {
      throw new SqlMapException("Error getting nested result map values for '" + mapping.getPropertyName() + "'.  Cause: " + e, e);
    }
  }

  protected Object getNestedSelectMappingValue(RequestScope request, ResultSet rs, BasicResultMapping mapping, Class targetType)
      throws SQLException {
    try {
      TypeHandlerFactory typeHandlerFactory = getDelegate().getTypeHandlerFactory();

      String statementName = mapping.getStatementName();
      ExtendedSqlMapClient client = (ExtendedSqlMapClient) request.getSession().getSqlMapClient();

      MappedStatement mappedStatement = client.getMappedStatement(statementName);
      Class parameterType = mappedStatement.getParameterClass();
      Object parameterObject = null;

      if (parameterType == null) {
        parameterObject = prepareBeanParameterObject(request, rs, mapping, parameterType);
      } else {
        if (typeHandlerFactory.hasTypeHandler(parameterType)) {
          parameterObject = preparePrimitiveParameterObject(rs, mapping, parameterType);
        } else if (DomTypeMarker.class.isAssignableFrom(parameterType)) {
          parameterObject = prepareDomParameterObject(rs, mapping);
        } else {
          parameterObject = prepareBeanParameterObject(request, rs, mapping, parameterType);
        }
      }

      Object result = null;
      if (parameterObject != null) {

        Sql sql = mappedStatement.getSql();
        ResultMap resultMap = sql.getResultMap(request, parameterObject);
        Class resultClass = resultMap.getResultClass();

        if (resultClass != null && !DomTypeMarker.class.isAssignableFrom(targetType)) {
          if (DomCollectionTypeMarker.class.isAssignableFrom(resultClass)) {
            targetType = DomCollectionTypeMarker.class;
          } else if (DomTypeMarker.class.isAssignableFrom(resultClass)) {
            targetType = DomTypeMarker.class;
          }
        }

        result = ResultLoader.loadResult(client, statementName, parameterObject, targetType);

        String nullValue = mapping.getNullValue();
        if (result == null && nullValue != null) {
          TypeHandler typeHandler = typeHandlerFactory.getTypeHandler(targetType);
          if (typeHandler != null) {
            result = typeHandler.valueOf(nullValue);
          }
        }
      }
      return result;
    } catch (InstantiationException e) {
      throw new NestedSQLException("Error setting nested bean property.  Cause: " + e, e);
    } catch (IllegalAccessException e) {
      throw new NestedSQLException("Error setting nested bean property.  Cause: " + e, e);
    }

  }

  private Object preparePrimitiveParameterObject(ResultSet rs, BasicResultMapping mapping, Class parameterType) throws SQLException {
    Object parameterObject;
    TypeHandlerFactory typeHandlerFactory = getDelegate().getTypeHandlerFactory();
    TypeHandler th = typeHandlerFactory.getTypeHandler(parameterType);
    parameterObject = th.getResult(rs, mapping.getColumnName());
    return parameterObject;
  }

  private Document newDocument(String root) {
    try {
      Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
      doc.appendChild(doc.createElement(root));
      return doc;
    } catch (ParserConfigurationException e) {
      throw new RuntimeException("Error creating XML document.  Cause: " + e);
    }
  }

  private Object prepareDomParameterObject(ResultSet rs, BasicResultMapping mapping) throws SQLException {
    TypeHandlerFactory typeHandlerFactory = getDelegate().getTypeHandlerFactory();

    Document doc = newDocument("parameter");
    Probe probe = ProbeFactory.getProbe(doc);

    String complexName = mapping.getColumnName();

    TypeHandler stringTypeHandler = typeHandlerFactory.getTypeHandler(String.class);
    if (complexName.indexOf('=') > -1) {
      // old 1.x style multiple params
      StringTokenizer parser = new StringTokenizer(complexName, "{}=, ", false);
      while (parser.hasMoreTokens()) {
        String propName = parser.nextToken();
        String colName = parser.nextToken();
        Object propValue = stringTypeHandler.getResult(rs, colName);
        probe.setObject(doc, propName, propValue.toString());
      }
    } else {
      // single param
      Object propValue = stringTypeHandler.getResult(rs, complexName);
      probe.setObject(doc, "value", propValue.toString());
    }

    return doc;
  }


  private Object prepareBeanParameterObject(RequestScope request, ResultSet rs, BasicResultMapping mapping, Class parameterType)
      throws InstantiationException, IllegalAccessException, SQLException {
    TypeHandlerFactory typeHandlerFactory = getDelegate().getTypeHandlerFactory();

    Object parameterObject;
    if (parameterType == null) {
      parameterObject = new HashMap();
    } else {
      parameterObject = ResultObjectFactoryUtil.createObjectThroughFactory(parameterType);
    }
    String complexName = mapping.getColumnName();

    if (complexName.indexOf('=') > -1
        || complexName.indexOf(',') > -1) {
      StringTokenizer parser = new StringTokenizer(complexName, "{}=, ", false);
      while (parser.hasMoreTokens()) {
        String propName = parser.nextToken();
        String colName = parser.nextToken();
        Class propType = PROBE.getPropertyTypeForSetter(parameterObject, propName);
        TypeHandler propTypeHandler = typeHandlerFactory.getTypeHandler(propType);
        Object propValue = propTypeHandler.getResult(rs, colName);
        PROBE.setObject(parameterObject, propName, propValue);
      }
    } else {
      // single param
      TypeHandler propTypeHandler = typeHandlerFactory.getTypeHandler(parameterType);
      if (propTypeHandler == null) {
        propTypeHandler = typeHandlerFactory.getUnkownTypeHandler();
      }
      parameterObject = propTypeHandler.getResult(rs, complexName);
    }

    return parameterObject;
  }

  protected Object getPrimitiveResultMappingValue(ResultSet rs, BasicResultMapping mapping) throws SQLException {
    Object value = null;
    TypeHandler typeHandler = mapping.getTypeHandler();
    if (typeHandler != null) {
      String columnName = mapping.getColumnName();
      int columnIndex = mapping.getColumnIndex();
      if (columnName == null) {
        value = typeHandler.getResult(rs, columnIndex);
      } else {
        value = typeHandler.getResult(rs, columnName);
      }
    } else {
      throw new SqlMapException("No type handler could be found to map the property '" + mapping.getPropertyName() + "' to the column '" + mapping.getColumnName() + "'.  One or both of the types, or the combination of types is not supported.");
    }
    return value;
  }

  protected Object doNullMapping(Object value, BasicResultMapping mapping) throws SqlMapException {
      if ( value == null )  {
      	TypeHandler typeHandler = mapping.getTypeHandler();
        if (typeHandler != null) {
            String nullValue = mapping.getNullValue();
            if ( nullValue != null )
              value = typeHandler.valueOf(nullValue);
            return value;
          } else {
            throw new SqlMapException("No type handler could be found to map the property '" + mapping.getPropertyName() + "' to the column '" + mapping.getColumnName() + "'.  One or both of the types, or the combination of types is not supported.");
          }
      }
      else  {
        return value;
      }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费观看一区二区三区 | 国产综合一区二区| 日本在线不卡一区| 国产一区二区91| 国产成人在线影院| 91精品1区2区| 久久久噜噜噜久久中文字幕色伊伊| 中文字幕在线观看不卡| 亚洲资源在线观看| 亚洲va韩国va欧美va| 精品亚洲成av人在线观看| 国产91丝袜在线播放0| 国产精品一二三区在线| 欧美日韩一区在线观看| 久久夜色精品国产噜噜av | 91网站视频在线观看| 日韩丝袜情趣美女图片| 国产精品卡一卡二| 日韩**一区毛片| 成人av电影观看| 日韩三级在线免费观看| 亚洲五月六月丁香激情| 国产盗摄精品一区二区三区在线 | 国产在线国偷精品产拍免费yy| 激情久久五月天| 欧美日韩一区二区电影| 日本一区二区免费在线观看视频| 无码av免费一区二区三区试看| 国产自产高清不卡| 91精品国模一区二区三区| 亚洲理论在线观看| 国产成人午夜精品影院观看视频 | 午夜不卡av免费| eeuss鲁片一区二区三区| 99久久99久久免费精品蜜臀| 国产午夜亚洲精品午夜鲁丝片| 亚洲成人先锋电影| 91国模大尺度私拍在线视频| 成人欧美一区二区三区| 精品一区二区日韩| 精品国产一区二区在线观看| 亚洲成人黄色小说| 精品视频1区2区| 亚洲一区在线观看免费 | 国产偷v国产偷v亚洲高清| 一级女性全黄久久生活片免费| 粉嫩av一区二区三区粉嫩| 26uuu亚洲| 精品一区二区三区免费观看| 日韩一区二区三区四区五区六区| 夜夜精品视频一区二区| 91久久香蕉国产日韩欧美9色| 精品国产一区二区三区忘忧草 | 成人av电影在线网| ...av二区三区久久精品| 欧美性色综合网| 午夜视频久久久久久| 欧美久久久久久蜜桃| 首页综合国产亚洲丝袜| 国产亚洲美州欧州综合国| 成熟亚洲日本毛茸茸凸凹| 国产日韩av一区二区| 成人av电影在线| 亚洲免费观看在线视频| 日本乱人伦aⅴ精品| 亚洲一区二区三区美女| 欧美成人一区二区三区片免费 | 久久久久亚洲蜜桃| 国产成人免费视| 亚洲欧美国产77777| 欧美午夜精品电影| 免费在线看成人av| 国产人妖乱国产精品人妖| 91在线精品一区二区三区| 亚洲精品久久久久久国产精华液| 91伊人久久大香线蕉| 午夜婷婷国产麻豆精品| 久久久久久影视| 床上的激情91.| 国产欧美日韩激情| 国产原创一区二区三区| 日本一区二区在线不卡| 欧美一区二区精品久久911| 成人av电影免费观看| 青青国产91久久久久久| 亚洲欧美日韩在线| 精品久久久久久久久久久久久久久久久 | 亚洲r级在线视频| 国产日韩亚洲欧美综合| 91超碰这里只有精品国产| 国产成人精品免费| 日韩国产欧美在线播放| 亚洲精品成人a在线观看| 久久久午夜精品理论片中文字幕| 欧美精品三级在线观看| 91麻豆精品秘密| 国产一区欧美一区| 蜜臀va亚洲va欧美va天堂| 自拍偷拍欧美精品| 国产情人综合久久777777| 666欧美在线视频| 欧洲生活片亚洲生活在线观看| 欧美日韩国产高清一区二区| 国产99久久久国产精品潘金| 精品在线播放免费| 日韩精品免费专区| 亚洲成人动漫在线免费观看| 亚洲精品国产品国语在线app| 久久精品一二三| 久久一区二区三区四区| 精品99一区二区三区| 日韩亚洲欧美中文三级| 91精品国产aⅴ一区二区| 欧美人与z0zoxxxx视频| 欧美日韩小视频| 欧美三级视频在线| 欧美无砖砖区免费| 色欧美日韩亚洲| 欧美色图12p| 欧美日韩免费在线视频| 欧美日韩小视频| 777奇米四色成人影色区| 欧美精品第1页| 欧美一区二区三区男人的天堂 | 97久久人人超碰| 成人教育av在线| 91亚洲精品一区二区乱码| 成人av电影免费在线播放| av电影在线观看完整版一区二区| 国产a区久久久| 91丨国产丨九色丨pron| 91麻豆.com| 欧美日韩一区二区三区视频| 欧美一区二区日韩| 2024国产精品| 国产精品久久久久一区| 综合在线观看色| 一区二区三区欧美久久| 亚洲超丰满肉感bbw| 亚洲成av人片| 国产美女视频一区| 成人福利视频在线看| 色激情天天射综合网| 欧美精品电影在线播放| 久久久久99精品一区| 亚洲柠檬福利资源导航| 日产精品久久久久久久性色| 成人一区二区三区视频在线观看| 99国产精品久| 在线综合亚洲欧美在线视频| 国产视频一区二区三区在线观看| 亚洲免费资源在线播放| 日本免费在线视频不卡一不卡二| 国模无码大尺度一区二区三区| 97久久超碰国产精品| 欧美一区二区三区免费视频 | 亚洲午夜私人影院| 久久国产人妖系列| 91丨国产丨九色丨pron| 日韩免费高清电影| 亚洲综合av网| 成人中文字幕合集| 日韩一区二区免费电影| 午夜伊人狠狠久久| 欧美日韩高清一区二区三区| 国产亚洲美州欧州综合国| 一区二区三区日韩欧美| 极品美女销魂一区二区三区 | 麻豆专区一区二区三区四区五区| 国产成人免费网站| 欧美一区二区三区播放老司机| 国产精品久久综合| 精品午夜一区二区三区在线观看| 日韩视频免费直播| 国产精品久久网站| 国产综合色精品一区二区三区| 欧美中文一区二区三区| 国产精品成人网| 国产精品资源在线看| 欧美肥胖老妇做爰| 亚洲另类中文字| 99久久精品费精品国产一区二区| 久久综合狠狠综合久久综合88 | 国产真实乱对白精彩久久| 精品1区2区3区| 一区二区三区欧美久久| av一区二区三区在线| 久久蜜臀中文字幕| 日本伊人精品一区二区三区观看方式| 99久久婷婷国产| 国产精品久久久久一区二区三区共| 精品一区二区三区的国产在线播放| 欧美精品日韩一区| 亚洲一区在线观看网站| 欧美在线观看视频一区二区| 亚洲欧洲三级电影| av中文字幕在线不卡| 中文字幕一区二区不卡| 99这里只有久久精品视频| 中文字幕一区二|