把调试好的SQL语句转换为JAVA代码小工具

本文介绍了一种使用Pattern实现SQL格式化的方法,并通过ZeroClipboard.js实现了代码复制功能。该实现采用Java作为后端语言,对输入的SQL进行解析和格式化处理,并将处理后的SQL展示给用户,同时提供一键复制功能。

关键点:Pattern实现SQL拆解、ZeroClipboard.js实现复制到剪切板

主要代码:

<%@ page language="java" import="java.util.*,java.util.regex.*,java.io.*,com.egeniuss.jxibs.util.*" pageEncoding="UTF-8"%>
<%
   String srcSQL = request.getParameter("srcSQL"); 
   StringBuffer targetSQL = new StringBuffer();
   
   if (!ObjectUtil.isNull(srcSQL)){
      srcSQL = new String(srcSQL.getBytes("8859_1"),"UTF-8");
      String[] lineArr = srcSQL.split("[\\n]+");
      for (int i = 0 ; i < lineArr.length ; i ++){
          Pattern p = Pattern.compile("\t|\r|\n");      
          Matcher m = p.matcher(lineArr[i]);      
          String strNoN = m.replaceAll(" "); 
          int spaceLength = strNoN.indexOf(strNoN.trim());
          if (i != 0){
              targetSQL.append("+").append(StringUtil.repeat(" ", spaceLength));
          }
          targetSQL.append("\"").append(strNoN.trim()).append(" \"");
          if (i != (lineArr.length - 1)){
              targetSQL.append("\n");
          }
      }
   }else{
       srcSQL = "";
   }

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
 
    <title>sql代码格式化</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
                  <!--author:李小家-->
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript" src="/tools/ZeroClipboard.js"></script> 
    <script language="JavaScript">
        var clip = null;
        
        function $(id) { return document.getElementById(id); }
        
        function init() {
            clip = new ZeroClipboard.Client();
            clip.setHandCursor( true );

            clip.addEventListener('mouseOver', my_mouse_over);
            clip.addEventListener('complete', my_complete);
            
            clip.glue( 'd_clip_button' );
        }

        function my_mouse_over(client) {
            clip.setText( $('fe_text').value );
        }
        
        function my_complete(client, text) {
            $('tip').innerHTML="复制成功";
        }

    </script>
  </head>
  
  <body onLoad="init()">
   <form name="form1" method="post"  action="/tools/sql2Java.jsp">
      <table>
        <tr>
        <td><textarea name="srcSQL" style="width:1200px;height:400px" ><%=srcSQL.toString()%></textarea></td>
        </tr>
      </table>
      <input type="submit"  value="生成JAVA代码" />&nbsp;&nbsp;<input type="button" id="d_clip_button" value="复制代码" />&nbsp;&nbsp;<span id="tip"></span><br/>
       <table>
        <tr>
        <td><textarea id="fe_text" onChange="clip.setText(this.value)" style="width:1200px;height:400px" ><%=targetSQL.toString()%></textarea></td>
        </tr>
      </table>
   </form>
  </body>
</html>
View Code

界面效果:

转载于:https://www.cnblogs.com/101key/p/3374295.html

一、简介 1.1前言 1、由于最近工作一直用Oracle,故对Oracle数据库研究为对象。 2、根据工作业务需求实际情况进行功能研发。为什么要开发呢?因为在数据库升级或者迁移的时候,为了保证不同环境不同数据库数据保持同步,故数据库SQL脚本非常作用。比如:数据库主脚本,副脚本,增量脚本。 3、 什么是主脚本、副脚本、增量脚本呢? 3.1、主脚本指数据库表或存储过程,视图脚本,序列等脚本。 3.2、副脚本指必须执行主脚本之后才执行的脚本。换句话说在没执行主键脚本的情况下,副脚本执行之后会回滚事务失败。 3.3、增量脚本指在执行主脚本或副脚本之后,根据需求对某个表添加/修改约束(主外键约束,长度约束等),添加/修改字段/添加数据等情况对数据库结构改变处理的一种行为脚本。 1.2作用 1、 快速产出自定义规则需要的SQL脚本。 2、减少人工编写SQL脚本出错率问题,完全通过程序检测SQL准确性。 3、帮助开发人员提高SQL编写效率,减少人工编写SQL开发本问题。 4、帮助开发人员节约时间,同时避免繁琐不必要编写SQL的工作。 二、实现方式与原理 2.1实现方式 1、实现方式分:正向与逆向实现。什么是正向与逆行呢【是否有鸡还是有蛋,先后道理同等】 2、正向方式:首先把设计好数据库表文档,把所有表的字段属性配置到EXCEL或者CSV格式的文件通过JXL/POI技术去读取文件的字段,再通过其他技术一系列程序处理之后生所需要的SQL脚本。 3、逆向方式:首先有数据库表,然后通过ORM持久化技术连接数据库再读取表的字段等属性出来,再通过其他技术一系列程序处理之后生所需要的SQL脚本。 2.2原理 对数据库软件内置核心表或视图查询出来存储用户行为表结构所有属性信息,对此属性结构信息进行分析与组装所需要SQL脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值