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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sqlstatementparser.java

?? 本套系統(tǒng)采用了業(yè)界當前最為流行的beanAction組件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package com.ibatis.sqlmap.engine.builder.xml;

import com.ibatis.common.beans.Probe;
import com.ibatis.common.beans.ProbeFactory;
import com.ibatis.common.resources.Resources;
import com.ibatis.common.xml.NodeletUtils;
import com.ibatis.sqlmap.client.SqlMapException;
import com.ibatis.sqlmap.engine.cache.CacheModel;
import com.ibatis.sqlmap.engine.mapping.parameter.BasicParameterMap;
import com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser;
import com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap;
import com.ibatis.sqlmap.engine.mapping.result.AutoResultMap;
import com.ibatis.sqlmap.engine.mapping.result.BasicResultMap;
import com.ibatis.sqlmap.engine.mapping.sql.Sql;
import com.ibatis.sqlmap.engine.mapping.sql.SqlText;
import com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql;
import com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.*;
import com.ibatis.sqlmap.engine.mapping.sql.simple.SimpleDynamicSql;
import com.ibatis.sqlmap.engine.mapping.sql.stat.StaticSql;
import com.ibatis.sqlmap.engine.mapping.statement.*;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import java.sql.ResultSet;
import java.util.*;

public class SqlStatementParser extends BaseParser {

  private static final Probe PROBE = ProbeFactory.getProbe();

  private static final InlineParameterMapParser PARAM_PARSER = new InlineParameterMapParser();

  public SqlStatementParser(Variables vars) {
    super(vars);
  }

  public MappedStatement parseGeneralStatement(Node node, GeneralStatement statement) {
    vars.errorCtx.setActivity("parsing a mapped statement");

    // get attributes
    Properties attributes = NodeletUtils.parseAttributes(node, vars.currentProperties);
    String id = attributes.getProperty("id");

    if (vars.useStatementNamespaces) {
      id = applyNamespace(id);
    }

    String parameterMapName = applyNamespace(attributes.getProperty("parameterMap"));
    String parameterClassName = attributes.getProperty("parameterClass");
    String resultMapName = attributes.getProperty("resultMap");
    String resultClassName = attributes.getProperty("resultClass");
    String cacheModelName = applyNamespace(attributes.getProperty("cacheModel"));
    String xmlResultName = attributes.getProperty("xmlResultName");
    String resultSetType = attributes.getProperty("resultSetType");
    String fetchSize = attributes.getProperty("fetchSize");
    String allowRemapping = attributes.getProperty("remapResults");
    String timeout = attributes.getProperty("timeout");

    String[] additionalResultMapNames;

    vars.errorCtx.setObjectId(id + " statement");


    // get parameter and result maps

    vars.errorCtx.setMoreInfo("Check the result map name.");
    //BasicResultMap resultMap = null;
    if (resultMapName != null) {
      additionalResultMapNames = getAllButFirstToken(resultMapName);
      resultMapName = getFirstToken (resultMapName);
      statement.setResultMap((BasicResultMap) vars.client.getDelegate().getResultMap(applyNamespace(resultMapName)));
      for (int i=0; i < additionalResultMapNames.length; i++) {
        statement.addResultMap((BasicResultMap) vars.client.getDelegate().getResultMap(applyNamespace(additionalResultMapNames[i])));
      }
    }

    vars.errorCtx.setMoreInfo("Check the parameter map name.");

    if (parameterMapName != null) {
      statement.setParameterMap((BasicParameterMap) vars.client.getDelegate().getParameterMap(parameterMapName));
    }

    statement.setId(id);
    statement.setResource(vars.errorCtx.getResource());

    if (resultSetType != null) {
      if ("FORWARD_ONLY".equals(resultSetType)) {
        statement.setResultSetType(new Integer(ResultSet.TYPE_FORWARD_ONLY));
      } else if ("SCROLL_INSENSITIVE".equals(resultSetType)) {
        statement.setResultSetType(new Integer(ResultSet.TYPE_SCROLL_INSENSITIVE));
      } else if ("SCROLL_SENSITIVE".equals(resultSetType)) {
        statement.setResultSetType(new Integer(ResultSet.TYPE_SCROLL_SENSITIVE));
      }
    }

    if (fetchSize != null) {
      statement.setFetchSize(new Integer(fetchSize));
    }

    // set parameter class either from attribute or from map (make sure to match)
    ParameterMap parameterMap = statement.getParameterMap();
    if (parameterMap == null) {
      try {
        if (parameterClassName != null) {
          vars.errorCtx.setMoreInfo("Check the parameter class.");
          parameterClassName = vars.typeHandlerFactory.resolveAlias(parameterClassName);
          Class parameterClass = Resources.classForName(parameterClassName);
          statement.setParameterClass(parameterClass);
        }
      } catch (ClassNotFoundException e) {
        throw new SqlMapException("Error.  Could not set parameter class.  Cause: " + e, e);
      }
    } else {
      statement.setParameterClass(parameterMap.getParameterClass());
    }

    // process SQL statement, including inline parameter maps
    vars.errorCtx.setMoreInfo("Check the SQL statement.");
    processSqlStatement(node, statement);

    // set up either null result map or automatic result mapping
    BasicResultMap resultMap = (BasicResultMap)statement.getResultMap();
    if (resultMap == null && resultClassName == null) {
      statement.setResultMap(null);
    } else if (resultMap == null) {
      String firstResultClass = getFirstToken(resultClassName);
      resultMap = buildAutoResultMap(allowRemapping, statement, firstResultClass, xmlResultName);
      statement.setResultMap(resultMap);
      String[] additionalResultClasses = getAllButFirstToken(resultClassName);
      for (int i=0; i<additionalResultClasses.length; i++) {
        statement.addResultMap(buildAutoResultMap(allowRemapping, statement, additionalResultClasses[i],xmlResultName));
      }
      
    }

    statement.setTimeout(vars.defaultStatementTimeout);
    if (timeout != null) {
      try {
        statement.setTimeout(Integer.valueOf(timeout));
      } catch (NumberFormatException e) {
        throw new SqlMapException("Specified timeout value for statement "
            + statement.getId() + " is not a valid integer");
      }
    }

    vars.errorCtx.setMoreInfo(null);
    vars.errorCtx.setObjectId(null);

    statement.setSqlMapClient(vars.client);
    if (cacheModelName != null && cacheModelName.length() > 0 && vars.client.getDelegate().isCacheModelsEnabled()) {
      CacheModel cacheModel = vars.client.getDelegate().getCacheModel(cacheModelName);
      return new CachingStatement(statement, cacheModel);
    } else {
      return statement;
    }

  }

  private BasicResultMap buildAutoResultMap(String allowRemapping, GeneralStatement statement, String firstResultClass, String xmlResultName) {
    BasicResultMap resultMap;
    resultMap = new AutoResultMap(vars.client.getDelegate(), "true".equals(allowRemapping));
    resultMap.setId(statement.getId() + "-AutoResultMap");
    resultMap.setResultClass(resolveClass(firstResultClass));
    resultMap.setXmlName(xmlResultName);
    resultMap.setResource(statement.getResource());
    return resultMap;
  }

  private Class resolveClass(String resultClassName) {
    try {
      if (resultClassName != null) {
        vars.errorCtx.setMoreInfo("Check the result class.");
        return Resources.classForName(vars.typeHandlerFactory.resolveAlias(resultClassName));
      } else {
        return null;
      }
    } catch (ClassNotFoundException e) {
      throw new SqlMapException("Error.  Could not set result class.  Cause: " + e, e);
    }
  }

  private String getFirstToken (String s) {
    return new StringTokenizer(s, ", ", false).nextToken();
  }

  private String[] getAllButFirstToken (String s) {
    List strings = new ArrayList();
    StringTokenizer parser = new StringTokenizer(s, ", ", false);
    parser.nextToken();
    while (parser.hasMoreTokens()) {
      strings.add(parser.nextToken());
    }
    return (String[]) strings.toArray(new String[strings.size()]);
  }

  private void processSqlStatement(Node n, GeneralStatement statement) {
    vars.errorCtx.setActivity("processing an SQL statement");

    boolean isDynamic = false;
    DynamicSql dynamic = new DynamicSql(vars.client.getDelegate());
    StringBuffer sqlBuffer = new StringBuffer();

    isDynamic = parseDynamicTags(n, dynamic, sqlBuffer, isDynamic, false);
    if (statement instanceof InsertStatement) {
      InsertStatement insertStatement = ((InsertStatement) statement);
      SelectKeyStatement selectKeyStatement = findAndParseSelectKeyStatement(n, statement);
      insertStatement.setSelectKeyStatement(selectKeyStatement);
    }

    String sqlStatement = sqlBuffer.toString();
    if (isDynamic) {
      statement.setSql(dynamic);
    } else {
      applyInlineParameterMap(statement, sqlStatement);
    }

  }

  private boolean parseDynamicTags(Node node, DynamicParent dynamic, StringBuffer sqlBuffer, boolean isDynamic, boolean postParseRequired) {
    vars.errorCtx.setActivity("parsing dynamic SQL tags");

    NodeList children = node.getChildNodes();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产网站在线观看| 久久国产福利国产秒拍| 91日韩一区二区三区| 国产亚洲一二三区| 国产福利精品一区二区| 91视频免费看| 蜜桃av噜噜一区| 日韩欧美不卡在线观看视频| 欧美高清视频不卡网| 在线精品视频小说1| 丰满岳乱妇一区二区三区| 蜜桃av一区二区在线观看| 豆国产96在线|亚洲| 久久国产剧场电影| 偷拍日韩校园综合在线| 国产在线精品国自产拍免费| 加勒比av一区二区| 国产欧美视频在线观看| 91小视频在线免费看| 亚洲国产一二三| 欧美一区二区在线看| 韩国三级电影一区二区| 国产精品欧美精品| 《视频一区视频二区| 国产日本一区二区| 一区二区三区国产精品| 成人午夜免费电影| 欧美亚洲动漫精品| 大胆欧美人体老妇| 91在线精品一区二区| 高清shemale亚洲人妖| 中文字幕欧美一| 国产精品一区二区在线看| 欧美午夜精品久久久久久超碰| 2020国产成人综合网| 99re视频这里只有精品| 亚洲日本青草视频在线怡红院| 午夜视频在线观看一区二区三区| 成人免费视频播放| 国产精品欧美久久久久无广告 | 久久免费电影网| 国产亚洲福利社区一区| 欧美极品aⅴ影院| 中文字幕一区三区| 国产一区二区三区四区五区美女 | 国产不卡免费视频| 美日韩一级片在线观看| 日日嗨av一区二区三区四区| 972aa.com艺术欧美| 国产精品国产三级国产| 国产91精品久久久久久久网曝门| 美日韩一区二区三区| 成人av片在线观看| 精品黑人一区二区三区久久| 日韩经典中文字幕一区| 亚洲免费观看在线视频| 欧美α欧美αv大片| 欧美日韩国产a| 欧美中文字幕一区二区三区| 成人av午夜影院| 狠狠色丁香婷婷综合久久片| 日本视频一区二区三区| 一区二区三区免费观看| 依依成人综合视频| 亚洲免费观看高清| 亚洲色图制服诱惑| 亚洲精品乱码久久久久久日本蜜臀| 欧美极品另类videosde| 国产一区二区三区视频在线播放| 国产精品国产三级国产普通话蜜臀| 久久亚洲一区二区三区明星换脸 | 综合久久久久久久| |精品福利一区二区三区| 亚洲欧美日韩精品久久久久| 亚洲欧美成aⅴ人在线观看| 亚洲成人黄色影院| 麻豆精品一区二区| 丰满岳乱妇一区二区三区| 北岛玲一区二区三区四区| 欧美人妖巨大在线| 久久久国产一区二区三区四区小说 | jvid福利写真一区二区三区| 日韩女同互慰一区二区| 另类综合日韩欧美亚洲| 日韩精品一区二区三区视频播放| 成人一区在线观看| 99视频一区二区| 国产激情一区二区三区| 综合久久一区二区三区| 中文字幕一区二区三中文字幕| 国产亚洲人成网站| 亚洲三级电影全部在线观看高清| 国产亚洲一区二区三区在线观看 | 欧美极品另类videosde| 亚洲欧美日韩在线不卡| 性做久久久久久久免费看| 亚洲午夜在线观看视频在线| 奇米色一区二区三区四区| 国内精品第一页| 欧美网站一区二区| 337p日本欧洲亚洲大胆色噜噜| 国产视频一区在线播放| 亚洲色图在线看| 美女一区二区视频| 91视频免费看| 国产视频在线观看一区二区三区| 亚洲综合一区二区精品导航| 日本欧美久久久久免费播放网| 成人综合婷婷国产精品久久蜜臀| 91成人在线免费观看| 久久久国产精品午夜一区ai换脸| 亚洲午夜私人影院| 亚洲欧美日韩小说| 亚洲国产精品精华液ab| 久久综合狠狠综合| 日韩一区二区视频在线观看| 在线播放一区二区三区| 久久精品视频网| 国产精品久久久99| 久久er99精品| 99久久久久久99| 91黄色激情网站| 91精品国产乱| 91亚洲精品久久久蜜桃网站| 成人免费视频一区| 精品国产百合女同互慰| 欧美亚洲禁片免费| 色婷婷久久久综合中文字幕| 久久影视一区二区| 久国产精品韩国三级视频| 欧美乱妇一区二区三区不卡视频 | 在线观看视频一区二区| 国产精品久久久久久久浪潮网站| 另类小说图片综合网| 精品免费99久久| 国产一区二区三区高清播放| 久久亚洲精品国产精品紫薇| 久久99精品国产91久久来源| 欧美福利一区二区| 青青青伊人色综合久久| 日韩精品专区在线影院重磅| 日本欧美在线看| wwww国产精品欧美| www.欧美日韩| 性感美女久久精品| www国产精品av| 色综合网色综合| 久久精品国产77777蜜臀| 久久久综合视频| 91福利在线导航| 国产一区二区不卡在线| 亚洲一区二区视频| 精品国产精品网麻豆系列| 成人久久18免费网站麻豆 | 在线观看一区二区视频| 日韩成人午夜精品| 久久综合色鬼综合色| 99精品久久久久久| 国产麻豆精品久久一二三| 一区二区三区在线免费视频| 亚洲精品一线二线三线| 91一区一区三区| 国产精品伊人色| 另类小说一区二区三区| 自拍偷自拍亚洲精品播放| 亚洲精品一区二区三区精华液| 91蜜桃视频在线| 国产激情一区二区三区| 国产一区欧美二区| 看片的网站亚洲| 久久精品国产色蜜蜜麻豆| 亚洲高清免费观看高清完整版在线观看| 日韩三级视频中文字幕| 欧美日韩亚洲丝袜制服| 色哟哟在线观看一区二区三区| 国内不卡的二区三区中文字幕 | 99国产欧美久久久精品| 国产99精品视频| 成人精品在线视频观看| 成人永久免费视频| 99久久久久久| 在线观看www91| 91精品久久久久久久91蜜桃| 欧美日韩免费视频| 欧美亚洲综合另类| 日韩一区二区电影网| 26uuu国产电影一区二区| 国产日韩精品视频一区| 自拍偷自拍亚洲精品播放| 亚洲黄色片在线观看| 日韩激情视频在线观看| 国精产品一区一区三区mba桃花 | 国产精品久线在线观看| 亚洲人成亚洲人成在线观看图片| 成人欧美一区二区三区视频网页| 亚洲一区二区三区四区五区黄 | 亚洲视频在线一区观看| 天天综合色天天| 一本久道中文字幕精品亚洲嫩| 欧美色图在线观看|