如何解析mybatis的动态Sql 变为 普通的静态Sql语句

工具类

package com.hellobike.css.workflow.component.aspect;

import com.alibaba.fastjson.JSONObject;
import com.sun.org.apache.xml.internal.resolver.helpers.PublicId;
import com.sun.org.apache.xml.internal.security.utils.XMLUtils;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.apache.ibatis.builder.xml.XMLStatementBuilder;
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.parsing.XNode;
import org.apache.ibatis.parsing.XPathParser;
import org.apache.ibatis.scripting.xmltags.DynamicSqlSource;
import org.apache.ibatis.scripting.xmltags.XMLScriptBuilder;
import org.apache.ibatis.session.Configuration;
import org.jcp.xml.dsig.internal.dom.DOMUtils;
import org.mybatis.spring.SqlSessionTemplate;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
import java.security.DomainLoadStoreParameter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MyBatisUtil {

    public static void main(String[] args) {

        JSONObject object = new JSONObject();
        //.put("condition","3");
        HashMap<String, Object> map2 = new HashMap();
        map2.put("condition", "3");
        //map2.put("condition",object);
        Long[] k = new Long[3];
        k[0] = 1l;
        k[1] = 2l;
        k[2] = 3l;
        object .put("array",k);
        map2.put("array",object);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("test",1);
        map2.put("obj",jsonObject);
        System.out.println(getOfficalSql(changeDynamicSql2StaticSql(
                "<select id=\"selectList\" parameterType=\"java.util.List\" resultType=\"java.lang.Integer\">\n" +
                        "        SELECT COUNT(1) FROM t_user\n" +
                        "        <where>and a = 2 and id IN\n" +
                        "        <foreach collection=\"array.array\" index=\"index\" item=\"item\"\n" +
                        "            open=\"(\" separator=\",\" close=\")\">\n" +
                        "            #{item}\n" +
                        "        </foreach>" +
                        "and test = #{obj.test}"+
                        "</where>\n" +
                        "    </select>", map2
        )));
    }

    public static String changeDynamicSql2StaticSql(String content, Map<String, Object> param) {
        //解析配置 -----但是因为我们手动输入字符串 所以跳过步骤
        Configuration configuration = new Configuration();
        //解析成xml
        Document doc = parseXMLDocument(content);
        //走mybatis 流程 parse成Xnode
        XPathParser xPathParser = new XPathParser(doc, false);
        Node node = doc.getFirstChild();
        XNode xNode = new XNode(xPathParser, node, null);
        XMLScriptBuilder xmlScriptBuilder = new XMLScriptBuilder(configuration, xNode);
        SqlSource sqlSource = xmlScriptBuilder.parseScriptNode();
        MappedStatement.Builder builder = new MappedStatement.Builder(configuration, content.toString(), sqlSource, null);
        List<ResultMap> resultMaps = new ArrayList<>();
        List<ResultMapping> resultMappings = new ArrayList<>();
        ResultMap.Builder resultMapBuilder = new ResultMap.Builder(configuration, content.toString(), Map.class, resultMappings, true);
        resultMaps.add(resultMapBuilder.build());
        MappedStatement ms = builder.resultMaps(resultMaps).build();
        BoundSql boundSql = ms.getBoundSql(param);
        System.out.println("预编译前Sql------" + boundSql.getSql() + "-----");
        System.out.println("***********************************************************");
        List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
        Map<String, Object> objectMap = (Map) boundSql.getParameterObject();
        String resultSql = boundSql.getSql();
        for (ParameterMapping mapping : parameterMappings) {
            if (boundSql.getAdditionalParameter(mapping.getProperty()) == null) {
                String placeHolder = mapping.getProperty() ;
                String[] props = placeHolder.split("\\.");
                Object obj = objectMap.get(props[0]);
                JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(obj));
                String res = null;
                if(props.length > 1){
                    for(int i = 1 ; i < props.length ; i++){
                        String key = props[i];
                        if(props.length == i + 1){
                            res = String.valueOf(json.get(key));
                            break;
                        }
                        json = JSONObject.parseObject(JSONObject.toJSONString(json.get(key)));
                    }
                }else{
                    res = String.valueOf(obj);
                }
                resultSql = resultSql.
                        replaceFirst("[?]", res);
                continue;
            }
            resultSql = resultSql.replaceFirst("[?]", boundSql.getAdditionalParameter(mapping.getProperty()).toString());
        }
        System.out.println("最终sql为: " + resultSql);
        return resultSql;
    }

    public static String getInsertSql(String sql) {
        return "<insert>" + sql + "</insert>";
    }

    public static String getSelectSql(String sql) {
        return "<select>" + sql + "</select>";
    }

    public static String getUpdateSql(String sql) {
        return "<update>" + sql + "</update>";
    }

    public static String parse(String sql) {

        return null;
    }

    public static Document parseXMLDocument(String xmlString) {
        if (xmlString == null) {
            throw new IllegalArgumentException();
        }
        try {
            return newDocumentBuilder().parse(new InputSource(new StringReader(xmlString)));
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());

        }
    }

    public static DocumentBuilder newDocumentBuilder() throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        return dbf.newDocumentBuilder();
    }

    public static Map<String, String> processRoot(Element root) {
        NodeList nl = root.getChildNodes();
        int len = nl.getLength();
        Map<String, String> m = new HashMap<String, String>();
        for (int i = 0; i < len; i++) {
            Node item = nl.item(i);
            if (item instanceof Element) {
                // 加载MSG选项
                Element el = (Element) item;
                String nodeName = el.getNodeName();
                String content = el.getTextContent();
                m.put(nodeName, content);
            }
        }
        return m;

    }
    public static String getOfficalSql(String sql){
        return sql.replaceAll("\\n","").replaceAll("[ ]+"," ");
    }
}

结果

D:\jdk\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.1.3\lib\idea_rt.jar=52478:D:\Program Files\JetBrains\IntelliJ IDEA 2019.1.3\bin" -Dfile.encoding=UTF-8 -classpath D:\jdk\jre\lib\charsets.jar;D:\jdk\jre\lib\deploy.jar;D:\jdk\jre\lib\ext\access-bridge-64.jar;D:\jdk\jre\lib\ext\cldrdata.jar;D:\jdk\jre\lib\ext\dnsns.jar;D:\jdk\jre\lib\ext\jaccess.jar;D:\jdk\jre\lib\ext\jfxrt.jar;D:\jdk\jre\lib\ext\localedata.jar;D:\jdk\jre\lib\ext\nashorn.jar;D:\jdk\jre\lib\ext\sunec.jar;D:\jdk\jre\lib\ext\sunjce_provider.jar;D:\jdk\jre\lib\ext\sunmscapi.jar;D:\jdk\jre\lib\ext\sunpkcs11.jar;D:\jdk\jre\lib\ext\zipfs.jar;D:\jdk\jre\lib\javaws.jar;D:\jdk\jre\lib\jce.jar;D:\jdk\jre\lib\jfr.jar;D:\jdk\jre\lib\jfxswt.jar;D:\jdk\jre\lib\jsse.jar;D:\jdk\jre\lib\management-agent.jar;D:\jdk\jre\lib\plugin.jar;D:\jdk\jre\lib\resources.jar;D:\jdk\jre\lib\rt.jar;D:\Documents\AppCSSWorkflowService\css-workflow-service\target\classes;D:\maven_repository\com\easybike\MsgPlateServiceIface\1.0.0-SNAPSHOT\MsgPlateServiceIface-1.0.0-20190627.090435-22.jar;D:\maven_repository\com\hellobike\tesla\common\common-bean\3.5.1-Trial\common-bean-3.5.1-Trial.jar;D:\Documents\AppCSSWorkflowService\css-workflow-iface\target\classes;D:\maven_repository\org\activiti\activiti-engine\6.0.0\activiti-engine-6.0.0.jar;D:\maven_repository\org\activiti\activiti-bpmn-converter\6.0.0\activiti-bpmn-converter-6.0.0.jar;D:\maven_repository\org\activiti\activiti-bpmn-model\6.0.0\activiti-bpmn-model-6.0.0.jar;D:\maven_repository\org\activiti\activiti-process-validation\6.0.0\activiti-process-validation-6.0.0.jar;D:\maven_repository\org\activiti\activiti-image-generator\6.0.0\activiti-image-generator-6.0.0.jar;D:\maven_repository\org\activiti\activiti-dmn-api\6.0.0\activiti-dmn-api-6.0.0.jar;D:\maven_repository\org\activiti\activiti-dmn-model\6.0.0\activiti-dmn-model-6.0.0.jar;D:\maven_repository\org\activiti\activiti-form-model\6.0.0\activiti-form-model-6.0.0.jar;D:\maven_repository\org\activiti\activiti-form-api\6.0.0\activiti-form-api-6.0.0.jar;D:\maven_repository\org\apache\commons\commons-email\1.4\commons-email-1.4.jar;D:\maven_repository\com\sun\mail\javax.mail\1.6.2\javax.mail-1.6.2.jar;D:\maven_repository\javax\activation\activation\1.1.1\activation-1.1.1.jar;D:\maven_repository\de\odysseus\juel\juel-api\2.2.7\juel-api-2.2.7.jar;D:\maven_repository\de\odysseus\juel\juel-impl\2.2.7\juel-impl-2.2.7.jar;D:\maven_repository\de\odysseus\juel\juel-spi\2.2.7\juel-spi-2.2.7.jar;D:\maven_repository\org\slf4j\jcl-over-slf4j\1.7.25\jcl-over-slf4j-1.7.25.jar;D:\maven_repository\com\google\api\grpc\proto-google-common-protos\0.1.9\proto-google-common-protos-0.1.9.jar;D:\maven_repository\com\google\protobuf\protobuf-java\3.4.0\protobuf-java-3.4.0.jar;D:\maven_repository\com\google\api\api-common\1.0.0-rc1\api-common-1.0.0-rc1.jar;D:\maven_repository\com\google\auto\value\auto-value\1.1\auto-value-1.1.jar;D:\maven_repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;D:\maven_repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;D:\maven_repository\com\easybike\rent\RentBosDataServiceIface\1.2.25-SNAPSHOT\RentBosDataServiceIface-1.2.25-20190930.025520-13.jar;D:\maven_repository\com\hellobike\rent\rent-base-data-iface\1.12.0-SNAPSHOT\rent-base-data-iface-1.12.0-20190422.071816-17.jar;D:\maven_repository\com\hellobike\rent\rent-base-common-enums\1.2.3-SNAPSHOT\rent-base-common-enums-1.2.3-20190424.160750-49.jar;D:\maven_repository\com\hellobike\rent\rent-user-common-enums\1.5.0-SNAPSHOT\rent-user-common-enums-1.5.0-20190910.035338-31.jar;D:\maven_repository\com\hellobike\rent\rent-common-iface\1.8.3-SNAPSHOT\rent-common-iface-1.8.3-20190430.031147-27.jar;D:\maven_repository\com\easybike\security\desensitizer\1.0.0-SNAPSHOT\desensitizer-1.0.0-20190611.075633-14.jar;D:\maven_repository\com\hellobike\rent\venus\Venus-iface\1.1.0-SNAPSHOT\Venus-iface-1.1.0-20190930.064012-11.jar;D:\maven_repository\com\hellobike\rent\share\LibRentBosShare-SoaIfaceBase\1.0.0-SNAPSHOT\LibRentBosShare-SoaIfaceBase-1.0.0-20191017.090435-22.jar;D:\maven_repository\com\hellobike\hitch\hitch-cms-iface\1.0.0-SNAPSHOT\hitch-cms-iface-1.0.0-20191011.075643-66.jar;D:\maven_repository\com\hellobike\hitch\hello-hitch-common\0.0.4-RELEASE\hello-hitch-common-0.0.4-RELEASE.jar;D:\maven_repository\com\carkey\commonUtil\0.1\commonUtil-0.1.jar;D:\maven_repository\org\apache\logging\log4j\log4j-web\2.11.1\log4j-web-2.11.1.jar;D:\maven_repository\com\alibaba\fastjson\1.2.60\fastjson-1.2.60.jar;D:\maven_repository\com\google\guava\guava\18.0\guava-18.0.jar;D:\maven_repository\redis\clients\jedis\2.9.0\jedis-2.9.0.jar;D:\maven_repository\org\apache\commons\commons-pool2\2.6.0\commons-pool2-2.6.0.jar;D:\maven_repository\com\rabbitmq\amqp-client\5.4.3\amqp-client-5.4.3.jar;D:\maven_repository\cn\jpush\api\jpush-client\3.2.3\jpush-client-3.2.3.jar;D:\maven_repository\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;D:\maven_repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;D:\maven_repository\xml-apis\xml-apis\1.4.01\xml-apis-1.4.01.jar;D:\maven_repository\jaxen\jaxen\1.1.6\jaxen-1.1.6.jar;D:\maven_repository\org\quartz-scheduler\quartz\2.3.0\quartz-2.3.0.jar;D:\maven_repository\com\mchange\mchange-commons-java\0.2.11\mchange-commons-java-0.2.11.jar;D:\maven_repository\org\quartz-scheduler\quartz-jobs\2.3.0\quartz-jobs-2.3.0.jar;D:\maven_repository\javax\servlet\javax.servlet-api\4.0.1\javax.servlet-api-4.0.1.jar;D:\maven_repository\com\hellobike\tesla\common\common-utils\3.5.1-Trial\common-utils-3.5.1-Trial.jar;D:\maven_repository\com\hellobike\tesla\common\common-annotation\3.5.1-Trial\common-annotation-3.5.1-Trial.jar;D:\maven_repository\com\hellobike\tesla\common\common-configuration\3.5.1-Trial\common-configuration-3.5.1-Trial.jar;D:\maven_repository\com\hellobike\tesla\common\tesla-datasource-spring-boot-starter\3.5.1-Trial\tesla-datasource-spring-boot-starter-3.5.1-Trial.jar;D:\maven_repository\org\codehaus\groovy\groovy\2.5.4\groovy-2.5.4.jar;D:\maven_repository\org\springframework\spring-jdbc\5.1.3.RELEASE\spring-jdbc-5.1.3.RELEASE.jar;D:\maven_repository\org\springframework\spring-tx\5.1.3.RELEASE\spring-tx-5.1.3.RELEASE.jar;D:\maven_repository\com\carkey\CommonUtility\0.1\CommonUtility-0.1.jar;D:\maven_repository\com\hellobike\druid-extend\2.0.3.2-RELEASE\druid-extend-2.0.3.2-RELEASE.jar;D:\maven_repository\com\hellobike\base\cerberus-api\1.0.2-RELEASE\cerberus-api-1.0.2-RELEASE.jar;D:\maven_repository\com\hellobike\owl\tracing-api\0.1.4\tracing-api-0.1.4.jar;D:\maven_repository\io\opentracing\opentracing-api\0.31.0\opentracing-api-0.31.0.jar;D:\maven_repository\io\opentracing\opentracing-noop\0.31.0\opentracing-noop-0.31.0.jar;D:\maven_repository\com\hellobike\owl\tracing-jaeger-impl\0.1.4\tracing-jaeger-impl-0.1.4.jar;D:\maven_repository\io\jaegertracing\jaeger-client\0.33.1\jaeger-client-0.33.1.jar;D:\maven_repository\io\jaegertracing\jaeger-thrift\0.33.1\jaeger-thrift-0.33.1.jar;D:\maven_repository\org\apache\thrift\libthrift\0.11.0\libthrift-0.11.0.jar;D:\maven_repository\com\squareup\okhttp3\okhttp\3.9.0\okhttp-3.9.0.jar;D:\maven_repository\com\squareup\okio\okio\1.13.0\okio-1.13.0.jar;D:\maven_repository\io\jaegertracing\jaeger-core\0.33.1\jaeger-core-0.33.1.jar;D:\maven_repository\io\jaegertracing\jaeger-tracerresolver\0.33.1\jaeger-tracerresolver-0.33.1.jar;D:\maven_repository\io\opentracing\contrib\opentracing-tracerresolver\0.1.5\opentracing-tracerresolver-0.1.5.jar;D:\maven_repository\com\hellobike\owl\metrics-api\0.1.4\metrics-api-0.1.4.jar;D:\maven_repository\io\micrometer\micrometer-core\1.1.1\micrometer-core-1.1.1.jar;D:\maven_repository\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-2.0.3.jar;D:\maven_repository\com\hellobike\owl\metrics-kafka-impl\0.1.4\metrics-kafka-impl-0.1.4.jar;D:\maven_repository\org\apache\kafka\kafka-clients\2.0.1\kafka-clients-2.0.1.jar;D:\maven_repository\org\lz4\lz4-java\1.4.1\lz4-java-1.4.1.jar;D:\maven_repository\org\xerial\snappy\snappy-java\1.1.7.2\snappy-java-1.1.7.2.jar;D:\maven_repository\com\alibaba\druid\1.1.16\druid-1.1.16.jar;D:\maven_repository\io\shardingsphere\sharding-jdbc-core\3.1.0\sharding-jdbc-core-3.1.0.jar;D:\maven_repository\io\shardingsphere\sharding-core\3.1.0\sharding-core-3.1.0.jar;D:\maven_repository\org\codehaus\groovy\groovy\2.4.5\groovy-2.4.5-indy.jar;D:\maven_repository\org\antlr\antlr4\4.7.1\antlr4-4.7.1.jar;D:\maven_repository\org\antlr\antlr4-runtime\4.7.1\antlr4-runtime-4.7.1.jar;D:\maven_repository\org\antlr\antlr-runtime\3.5.2\antlr-runtime-3.5.2.jar;D:\maven_repository\org\antlr\ST4\4.0.8\ST4-4.0.8.jar;D:\maven_repository\org\abego\treelayout\org.abego.treelayout.core\1.0.3\org.abego.treelayout.core-1.0.3.jar;D:\maven_repository\org\glassfish\javax.json\1.0.4\javax.json-1.0.4.jar;D:\maven_repository\com\ibm\icu\icu4j\58.2\icu4j-58.2.jar;D:\maven_repository\io\shardingsphere\sharding-transaction-core\3.1.0\sharding-transaction-core-3.1.0.jar;D:\maven_repository\org\reflections\reflections\0.9.10\reflections-0.9.10.jar;D:\maven_repository\org\javassist\javassist\3.19.0-GA\javassist-3.19.0-GA.jar;D:\maven_repository\com\google\code\findbugs\annotations\2.0.1\annotations-2.0.1.jar;D:\maven_repository\com\hellobike\tesla\common\tesla-redis-spring-boot-starter\3.5.1-Trial\tesla-redis-spring-boot-starter-3.5.1-Trial.jar;D:\maven_repository\com\hellobike\base\redis-common-starter\1.6.7\redis-common-starter-1.6.7.jar;D:\maven_repository\com\hellobike\base\redis-client-jedis\1.6.7\redis-client-jedis-1.6.7.jar;D:\maven_repository\io\opentracing\contrib\opentracing-redis-jedis\0.0.17\opentracing-redis-jedis-0.0.17.jar;D:\maven_repository\io\opentracing\contrib\opentracing-redis-common\0.0.17\opentracing-redis-common-0.0.17.jar;D:\maven_repository\io\opentracing\opentracing-util\0.31.0\opentracing-util-0.31.0.jar;D:\maven_repository\org\jetbrains\kotlin\kotlin-stdlib\1.2.71\kotlin-stdlib-1.2.71.jar;D:\maven_repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.2.71\kotlin-stdlib-common-1.2.71.jar;D:\maven_repository\org\jetbrains\annotations\13.0\annotations-13.0.jar;D:\maven_repository\com\hellobike\base\basic-conf-auth-client-core\1.1.2\basic-conf-auth-client-core-1.1.2.jar;D:\maven_repository\khttp\khttp\0.1.0\khttp-0.1.0.jar;D:\maven_repository\org\json\json\20150729\json-20150729.jar;D:\maven_repository\com\hellobike\base\redis-client-core\1.6.7\redis-client-core-1.6.7.jar;D:\maven_repository\org\jetbrains\kotlin\kotlin-reflect\1.2.71\kotlin-reflect-1.2.71.jar;D:\maven_repository\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;D:\maven_repository\com\hellobike\tesla\common\tesla-soav2-spring-boot-starter\3.5.1-Trial\tesla-soav2-spring-boot-starter-3.5.1-Trial.jar;D:\maven_repository\com\hellobike\soa-starter-origin\3.3.7-RELEASE\soa-starter-origin-3.3.7-RELEASE.jar;D:\maven_repository\com\hellobike\soa-starter-core\3.3.7-RELEASE\soa-starter-core-3.3.7-RELEASE.jar;D:\maven_repository\com\hellobike\soa-registry-zookeeper\3.3.7-RELEASE\soa-registry-zookeeper-3.3.7-RELEASE.jar;D:\maven_repository\com\hellobike\soa-registry-core\3.3.7-RELEASE\soa-registry-core-3.3.7-RELEASE.jar;D:\maven_repository\carkey-jarch\utility-utils\2.7.0-RELEASE\utility-utils-2.7.0-RELEASE.jar;D:\maven_repository\carkey-jarch\utility-jackson\2.7.2-RELEASE\utility-jackson-2.7.2-RELEASE.jar;D:\maven_repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;D:\maven_repository\carkey-jarch\utility-etrack\2.7.2-RELEASE\utility-etrack-2.7.2-RELEASE.jar;D:\maven_repository\org\postgresql\postgresql\42.2.5\postgresql-42.2.5.jar;D:\maven_repository\com\github\ben-manes\caffeine\caffeine\2.6.2\caffeine-2.6.2.jar;D:\maven_repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;D:\maven_repository\org\apache\logging\log4j\log4j-api\2.11.1\log4j-api-2.11.1.jar;D:\maven_repository\org\apache\logging\log4j\log4j-core\2.11.1\log4j-core-2.11.1.jar;D:\maven_repository\org\apache\logging\log4j\log4j-jcl\2.11.1\log4j-jcl-2.11.1.jar;D:\maven_repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\maven_repository\org\apache\logging\log4j\log4j-slf4j-impl\2.11.1\log4j-slf4j-impl-2.11.1.jar;D:\maven_repository\org\springframework\boot\spring-boot\2.1.1.RELEASE\spring-boot-2.1.1.RELEASE.jar;D:\maven_repository\org\springframework\spring-core\5.1.3.RELEASE\spring-core-5.1.3.RELEASE.jar;D:\maven_repository\org\springframework\spring-jcl\5.1.3.RELEASE\spring-jcl-5.1.3.RELEASE.jar;D:\maven_repository\org\springframework\spring-context\5.1.3.RELEASE\spring-context-5.1.3.RELEASE.jar;D:\maven_repository\org\springframework\spring-expression\5.1.3.RELEASE\spring-expression-5.1.3.RELEASE.jar;D:\maven_repository\org\springframework\data\spring-data-commons\2.1.3.RELEASE\spring-data-commons-2.1.3.RELEASE.jar;D:\maven_repository\org\springframework\spring-beans\5.1.3.RELEASE\spring-beans-5.1.3.RELEASE.jar;D:\maven_repository\org\springframework\boot\spring-boot-autoconfigure\2.1.1.RELEASE\spring-boot-autoconfigure-2.1.1.RELEASE.jar;D:\maven_repository\org\springframework\boot\spring-boot-configuration-processor\2.1.1.RELEASE\spring-boot-configuration-processor-2.1.1.RELEASE.jar;D:\maven_repository\org\springframework\boot\spring-boot-starter-aop\2.1.1.RELEASE\spring-boot-starter-aop-2.1.1.RELEASE.jar;D:\maven_repository\org\springframework\boot\spring-boot-starter\2.1.1.RELEASE\spring-boot-starter-2.1.1.RELEASE.jar;D:\maven_repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\maven_repository\org\springframework\spring-aop\5.1.3.RELEASE\spring-aop-5.1.3.RELEASE.jar;D:\maven_repository\org\aspectj\aspectjweaver\1.9.2\aspectjweaver-1.9.2.jar;D:\maven_repository\org\springframework\boot\spring-boot-starter-amqp\2.1.1.RELEASE\spring-boot-starter-amqp-2.1.1.RELEASE.jar;D:\maven_repository\org\springframework\spring-messaging\5.1.3.RELEASE\spring-messaging-5.1.3.RELEASE.jar;D:\maven_repository\org\springframework\amqp\spring-rabbit\2.1.2.RELEASE\spring-rabbit-2.1.2.RELEASE.jar;D:\maven_repository\org\springframework\amqp\spring-amqp\2.1.2.RELEASE\spring-amqp-2.1.2.RELEASE.jar;D:\maven_repository\org\springframework\spring-aspects\5.1.3.RELEASE\spring-aspects-5.1.3.RELEASE.jar;D:\maven_repository\com\lmax\disruptor\3.3.5\disruptor-3.3.5.jar;D:\maven_repository\org\apache\tomcat\tomcat-jdbc\8.5.31\tomcat-jdbc-8.5.31.jar;D:\maven_repository\org\apache\tomcat\tomcat-juli\8.5.31\tomcat-juli-8.5.31.jar;D:\maven_repository\org\mybatis\mybatis-spring\2.0.2\mybatis-spring-2.0.2.jar;D:\maven_repository\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;D:\maven_repository\org\apache\httpcomponents\httpcore\4.4.10\httpcore-4.4.10.jar;D:\maven_repository\org\apache\httpcomponents\httpclient\4.5.6\httpclient-4.5.6.jar;D:\maven_repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;D:\maven_repository\com\github\jsqlparser\jsqlparser\1.0\jsqlparser-1.0.jar;D:\maven_repository\com\fasterxml\jackson\core\jackson-databind\2.9.7\jackson-databind-2.9.7.jar;D:\maven_repository\com\fasterxml\jackson\core\jackson-core\2.9.7\jackson-core-2.9.7.jar;D:\maven_repository\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.9.7\jackson-dataformat-yaml-2.9.7.jar;D:\maven_repository\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar;D:\maven_repository\org\projectlombok\lombok\1.18.4\lombok-1.18.4.jar;D:\maven_repository\org\activiti\activiti-spring-boot-starter-basic\6.0.0\activiti-spring-boot-starter-basic-6.0.0.jar;D:\maven_repository\org\activiti\activiti-spring\6.0.0\activiti-spring-6.0.0.jar;D:\maven_repository\org\springframework\spring-orm\5.1.3.RELEASE\spring-orm-5.1.3.RELEASE.jar;D:\maven_repository\commons-dbcp\commons-dbcp\1.4\commons-dbcp-1.4.jar;D:\maven_repository\commons-pool\commons-pool\1.6\commons-pool-1.6.jar;D:\maven_repository\org\springframework\boot\spring-boot-starter-jdbc\2.1.1.RELEASE\spring-boot-starter-jdbc-2.1.1.RELEASE.jar;D:\maven_repository\com\zaxxer\HikariCP\3.2.0\HikariCP-3.2.0.jar;D:\maven_repository\com\hellobike\css\css-auth-iface\1.0.3-SNAPSHOT\css-auth-iface-1.0.3-20191107.090239-13.jar;D:\maven_repository\com\hellobike\css\user\css-user-iface\1.2.0-SNAPSHOT\css-user-iface-1.2.0-20190225.130553-29.jar;D:\maven_repository\com\hellobike\offline\offline-data-iface\0.2.0-SNAPSHOT\offline-data-iface-0.2.0-20190306.074812-109.jar;D:\maven_repository\com\easybike\dictionary\dictionary-iface\2.27.0-RELEASE\dictionary-iface-2.27.0-RELEASE.jar;D:\maven_repository\org\elasticsearch\elasticsearch\5.6.3\elasticsearch-5.6.3.jar;D:\maven_repository\org\apache\lucene\lucene-core\6.6.1\lucene-core-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-analyzers-common\6.6.1\lucene-analyzers-common-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-backward-codecs\6.6.1\lucene-backward-codecs-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-grouping\6.6.1\lucene-grouping-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-highlighter\6.6.1\lucene-highlighter-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-join\6.6.1\lucene-join-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-memory\6.6.1\lucene-memory-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-misc\6.6.1\lucene-misc-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-queries\6.6.1\lucene-queries-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-queryparser\6.6.1\lucene-queryparser-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-sandbox\6.6.1\lucene-sandbox-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-spatial\6.6.1\lucene-spatial-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-spatial-extras\6.6.1\lucene-spatial-extras-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-spatial3d\6.6.1\lucene-spatial3d-6.6.1.jar;D:\maven_repository\org\apache\lucene\lucene-suggest\6.6.1\lucene-suggest-6.6.1.jar;D:\maven_repository\org\elasticsearch\securesm\1.1\securesm-1.1.jar;D:\maven_repository\net\sf\jopt-simple\jopt-simple\5.0.2\jopt-simple-5.0.2.jar;D:\maven_repository\com\carrotsearch\hppc\0.7.1\hppc-0.7.1.jar;D:\maven_repository\joda-time\joda-time\2.10.1\joda-time-2.10.1.jar;D:\maven_repository\com\fasterxml\jackson\dataformat\jackson-dataformat-smile\2.9.7\jackson-dataformat-smile-2.9.7.jar;D:\maven_repository\com\fasterxml\jackson\dataformat\jackson-dataformat-cbor\2.9.7\jackson-dataformat-cbor-2.9.7.jar;D:\maven_repository\com\tdunning\t-digest\3.0\t-digest-3.0.jar;D:\maven_repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;D:\maven_repository\org\elasticsearch\jna\4.4.0-1\jna-4.4.0-1.jar;D:\maven_repository\io\searchbox\jest\5.3.3\jest-5.3.3.jar;D:\maven_repository\io\searchbox\jest-common\5.3.3\jest-common-5.3.3.jar;D:\maven_repository\org\apache\httpcomponents\httpcore-nio\4.4.10\httpcore-nio-4.4.10.jar;D:\maven_repository\org\apache\httpcomponents\httpasyncclient\4.1.4\httpasyncclient-4.1.4.jar;D:\maven_repository\com\easybike\ShortUrlServiceIface\2.0.0\ShortUrlServiceIface-2.0.0.jar;D:\maven_repository\com\aliyun\oss\aliyun-sdk-oss\2.2.3\aliyun-sdk-oss-2.2.3.jar;D:\maven_repository\org\jdom\jdom\1.1\jdom-1.1.jar;D:\maven_repository\net\sf\json-lib\json-lib\2.4\json-lib-2.4-jdk15.jar;D:\maven_repository\commons-beanutils\commons-beanutils\1.8.0\commons-beanutils-1.8.0.jar;D:\maven_repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;D:\maven_repository\commons-lang\commons-lang\2.5\commons-lang-2.5.jar;D:\maven_repository\net\sf\ezmorph\ezmorph\1.0.6\ezmorph-1.0.6.jar;D:\maven_repository\com\hellobike\tesla\common\tesla-apollo-spring-boot-starter\3.5.1-Trial\tesla-apollo-spring-boot-starter-3.5.1-Trial.jar;D:\maven_repository\com\ctrip\framework\apollo\apollo-client\1.2.0-hb\apollo-client-1.2.0-hb.jar;D:\maven_repository\com\ctrip\framework\apollo\apollo-core\1.2.0-hb\apollo-core-1.2.0-hb.jar;D:\maven_repository\com\google\inject\guice\4.1.0\guice-4.1.0.jar;D:\maven_repository\javax\inject\javax.inject\1\javax.inject-1.jar;D:\maven_repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\maven_repository\com\fasterxml\jackson\dataformat\jackson-dataformat-properties\2.9.7\jackson-dataformat-properties-2.9.7.jar;D:\maven_repository\com\fasterxml\jackson\dataformat\jackson-dataformat-xml\2.9.7\jackson-dataformat-xml-2.9.7.jar;D:\maven_repository\com\fasterxml\jackson\module\jackson-module-jaxb-annotations\2.9.7\jackson-module-jaxb-annotations-2.9.7.jar;D:\maven_repository\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;D:\maven_repository\com\fasterxml\woodstox\woodstox-core\5.0.3\woodstox-core-5.0.3.jar;D:\maven_repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.7\jackson-module-parameter-names-2.9.7.jar;D:\maven_repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.7\jackson-datatype-jdk8-2.9.7.jar;D:\maven_repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.7\jackson-datatype-jsr310-2.9.7.jar;D:\maven_repository\org\springframework\retry\spring-retry\1.2.2.RELEASE\spring-retry-1.2.2.RELEASE.jar;D:\maven_repository\com\easybike\RideCardServiceIface\1.2.4-SNAPSHOT\RideCardServiceIface-1.2.4-20190807.101805-6.jar;D:\maven_repository\com\hellobike\common\common-proto\1.0.0\common-proto-1.0.0.jar;D:\maven_repository\com\hellobike\market\config\market-config-iface\0.5.5-SNAPSHOT\market-config-iface-0.5.5-20190514.065603-11.jar;D:\maven_repository\com\easybike\ia\ia-iface\2.24.2-RELEASE\ia-iface-2.24.2-RELEASE.jar;D:\maven_repository\com\alipay\sdk\alipay-sdk-java\3.7.26.ALL\alipay-sdk-java-3.7.26.ALL.jar;D:\maven_repository\com\easybike\CouponServiceIface\1.7.4-SNAPSHOT\CouponServiceIface-1.7.4-20190729.121852-11.jar;D:\maven_repository\com\hellobike\admin\task\task-iface\2.30.1-SNAPSHOT\task-iface-2.30.1-20190821.075402-36.jar;D:\maven_repository\com\hello\hitch\coupon\HelloHitchCouponServiceIface\1.0.4-SNAPSHOT\HelloHitchCouponServiceIface-1.0.4-20190403.063437-5.jar;D:\maven_repository\com\hellobike\alpha\pay\pay-facade-iface\1.0.8-SNAPSHOT\pay-facade-iface-1.0.8-20191010.060110-32.jar;D:\maven_repository\com\hellobike\PowerBikeRideCardIface\1.2.1-RELEASE\PowerBikeRideCardIface-1.2.1-RELEASE.jar;D:\maven_repository\com\easybike\UserServiceIface\3.6.6-RELEASE\UserServiceIface-3.6.6-RELEASE.jar;D:\maven_repository\com\hellobike\soa-common\3.3.7-RELEASE\soa-common-3.3.7-RELEASE.jar;D:\maven_repository\io\grpc\grpc-core\1.6.1\grpc-core-1.6.1.jar;D:\maven_repository\io\grpc\grpc-context\1.6.1\grpc-context-1.6.1.jar;D:\maven_repository\com\google\errorprone\error_prone_annotations\2.0.19\error_prone_annotations-2.0.19.jar;D:\maven_repository\com\google\instrumentation\instrumentation-api\0.4.3\instrumentation-api-0.4.3.jar;D:\maven_repository\io\opencensus\opencensus-api\0.5.1\opencensus-api-0.5.1.jar;D:\maven_repository\org\apache\commons\commons-collections4\4.3\commons-collections4-4.3.jar;D:\maven_repository\com\carkey\spark\yukon-logger\0.6.7\yukon-logger-0.6.7.jar;D:\maven_repository\org\apache\curator\curator-recipes\4.0.1\curator-recipes-4.0.1.jar;D:\maven_repository\org\apache\curator\curator-framework\4.0.1\curator-framework-4.0.1.jar;D:\maven_repository\org\apache\curator\curator-client\4.0.1\curator-client-4.0.1.jar;D:\maven_repository\org\apache\zookeeper\zookeeper\3.4.13\zookeeper-3.4.13.jar;D:\maven_repository\jline\jline\0.9.94\jline-0.9.94.jar;D:\maven_repository\org\apache\yetus\audience-annotations\0.5.0\audience-annotations-0.5.0.jar;D:\maven_repository\io\netty\netty\3.10.6.Final\netty-3.10.6.Final.jar;D:\maven_repository\com\netflix\hystrix\hystrix-core\1.5.18\hystrix-core-1.5.18.jar;D:\maven_repository\com\netflix\archaius\archaius-core\0.4.1\archaius-core-0.4.1.jar;D:\maven_repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;D:\maven_repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;D:\maven_repository\com\hellobike\owl\logging-logger-config\0.1.4\logging-logger-config-0.1.4.jar;D:\maven_repository\com\hellobike\base\cerberus-impl\1.0.2-RELEASE\cerberus-impl-1.0.2-RELEASE.jar;D:\maven_repository\com\easybike\OrderServiceIface\3.0.8\OrderServiceIface-3.0.8.jar;D:\maven_repository\com\easybike\config\config-iface\2.26.0-SNAPSHOT\config-iface-2.26.0-20180531.050256-9.jar;D:\maven_repository\carkey-jarch\soa-contract\2.0.19-RELEASE\soa-contract-2.0.19-RELEASE.jar;D:\maven_repository\com\easybike\BikeFaultServiceIface\1.1.0-SNAPSHOT\BikeFaultServiceIface-1.1.0-20180802.130618-12.jar;D:\maven_repository\com\hellobike\soa-rpc\3.3.7-RELEASE\soa-rpc-3.3.7-RELEASE.jar;D:\maven_repository\com\hellobike\soa-mq-api\3.3.7-RELEASE\soa-mq-api-3.3.7-RELEASE.jar;D:\maven_repository\com\hellobike\base\SoaAuthServiceIface\1.0.2-RELEASE\SoaAuthServiceIface-1.0.2-RELEASE.jar;D:\maven_repository\com\hellobike\soa-protobuf\3.3.7-RELEASE\soa-protobuf-3.3.7-RELEASE.jar;D:\maven_repository\io\grpc\grpc-all\1.6.1\grpc-all-1.6.1.jar;D:\maven_repository\io\grpc\grpc-auth\1.6.1\grpc-auth-1.6.1.jar;D:\maven_repository\com\google\auth\google-auth-library-credentials\0.4.0\google-auth-library-credentials-0.4.0.jar;D:\maven_repository\io\grpc\grpc-netty\1.6.1\grpc-netty-1.6.1.jar;D:\maven_repository\io\netty\netty-codec-http2\4.1.31.Final\netty-codec-http2-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-codec-http\4.1.31.Final\netty-codec-http-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-codec\4.1.31.Final\netty-codec-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-handler\4.1.31.Final\netty-handler-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-buffer\4.1.31.Final\netty-buffer-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-common\4.1.31.Final\netty-common-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-handler-proxy\4.1.31.Final\netty-handler-proxy-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-transport\4.1.31.Final\netty-transport-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-resolver\4.1.31.Final\netty-resolver-4.1.31.Final.jar;D:\maven_repository\io\netty\netty-codec-socks\4.1.31.Final\netty-codec-socks-4.1.31.Final.jar;D:\maven_repository\io\grpc\grpc-okhttp\1.6.1\grpc-okhttp-1.6.1.jar;D:\maven_repository\com\squareup\okhttp\okhttp\2.5.0\okhttp-2.5.0.jar;D:\maven_repository\io\grpc\grpc-protobuf\1.6.1\grpc-protobuf-1.6.1.jar;D:\maven_repository\com\google\protobuf\protobuf-java-util\3.3.1\protobuf-java-util-3.3.1.jar;D:\maven_repository\io\grpc\grpc-protobuf-lite\1.6.1\grpc-protobuf-lite-1.6.1.jar;D:\maven_repository\io\grpc\grpc-protobuf-nano\1.6.1\grpc-protobuf-nano-1.6.1.jar;D:\maven_repository\com\google\protobuf\nano\protobuf-javanano\3.0.0-alpha-5\protobuf-javanano-3.0.0-alpha-5.jar;D:\maven_repository\io\grpc\grpc-stub\1.6.1\grpc-stub-1.6.1.jar;D:\maven_repository\com\hellobike\soa-annotation\3.3.7-RELEASE\soa-annotation-3.3.7-RELEASE.jar;D:\maven_repository\io\opentracing\contrib\opentracing-grpc\0.0.14\opentracing-grpc-0.0.14.jar;D:\maven_repository\com\alibaba\csp\sentinel-core\1.5.1\sentinel-core-1.5.1.jar;D:\maven_repository\com\alibaba\csp\sentinel-datasource-zookeeper\1.5.1\sentinel-datasource-zookeeper-1.5.1.jar;D:\maven_repository\com\alibaba\csp\sentinel-datasource-extension\1.5.1\sentinel-datasource-extension-1.5.1.jar com.hellobike.css.workflow.component.aspect.MyBatisUtil
预编译前Sql------SELECT COUNT(1) FROM t_user
         WHERE  a = 2 and id IN
        (
            ?
        ,
            ?
        ,
            ?
        )and test = ?-----
***********************************************************
obj.test
1
test
{"test":1}
最终sql为: SELECT COUNT(1) FROM t_user
         WHERE  a = 2 and id IN
        (
            1
        ,
            2
        ,
            3
        )and test = 1
SELECT COUNT(1) FROM t_user WHERE a = 2 and id IN ( 1 , 2 , 3 )and test = 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值