zoukankan      html  css  js  c++  java
  • [转]JavaScript将MyBatis打印的日志转化为可执行sql

    原文作者:Zale_J

    地址:https://blog.csdn.net/Zale_J/article/details/89402668

    原作者的工具有点小bug,修改了一下并且加上了边框

    配合数据库插入、修改语句字段视图使用更佳

    运行效果

    运行效果

    代码

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>mybatis转换</title>
        <script type="text/javascript">
            function f(obj) {
                var textVa = obj.value;
                // 获取带问号的SQL语句
                var statementStartIndex = textVa.indexOf('Preparing: ');
                var statementEndIndex = textVa.length - 1;
                for (var i = statementStartIndex; i < textVa.length; i++) {
                    if (textVa[i] == "
    ") {
                        statementEndIndex = i;
                        break;
                    }
                }
                var statementStr = textVa.substring(statementStartIndex + "Preparing: ".length, statementEndIndex);
                console.log(statementStr);
                //获取参数
                var parametersStartIndex = textVa.indexOf('Parameters: ');
                var parametersEndIndex = textVa.length;
                for (var i = parametersStartIndex; i < textVa.length; i++) {
                    if (textVa[i] == "
    ") {
                        parametersEndIndex = i;
                        break;
                    } else {
                        // console.log(textVa[i]);
                    }
                }
                var parametersStr = textVa.substring(parametersStartIndex + "Parameters: ".length, parametersEndIndex);
                console.log(parametersStr);
                // 参数列表
                var parametersStrArr = parametersStr.split(",");
                console.log(parametersStrArr);
                for (var i = 0; i < parametersStrArr.length; i++) {
                    tempStr = parametersStrArr[i].substring(0, parametersStrArr[i].indexOf("("));
                    // 不含"("是null
                    if(tempStr == ''){
                        tempStr = "null";
                    }
                    // 如果数据中带括号需要判断参数类型
                    typeStr = parametersStrArr[i].substring(parametersStrArr[i].indexOf("(") + 1, parametersStrArr[i].indexOf(")"));
                    if (typeStr == "String" || typeStr == "Timestamp") {
                        statementStr = statementStr.replace("?", "'" + tempStr.trim() + "'");
                    } else {
                        statementStr = statementStr.replace("?", tempStr.trim());
                    }
                }
                console.log(statementStr);
                document.getElementById("d1").innerHTML = statementStr;
                return true;
            }
        </script>
    </head>
    <body>
        <button type="submit" onclick="f(document.getElementById('1'))">转换</button><br><br>
        <textarea style="border:blue solid 2px;" name="getStr" id="1" rows="25" cols="150"></textarea><br>
        <p style="color:red;font:30px bold;">你的SQL</p>
        <div style="border:red solid 2px;" id="d1"></div>
    </body>
    </html>
    
  • 相关阅读:
    vs2003 序列化json
    异步执行sql语句
    【读书笔记】原型模式代码(C#)
    【读书笔记】工厂方法模式代码(C#,C++)
    【转】C++纯虚函数
    【读书笔记】模板方法模式代码(C++)
    【读书笔记】代理模式翻译成C++了
    【读书笔记】模板方法模式(C#)
    【读书笔记】原型模式代码(C++) 第一版
    【读书笔记】原型模式第二版(C++)新鲜出炉
  • 原文地址:https://www.cnblogs.com/n031/p/11176346.html
Copyright © 2011-2022 走看看