Search Results for 'SQL to java code'


1 posts related to 'SQL to java code'

  1. 2010/03/30 SQL to Java code 변환

SQL to Java code 변환

Dev 2010/03/30 15:53
얼마전, AcroEdit를 설치해 보니, 매크로 스크립트 기능 중 플러그인 식으로
라인단위로 코드로 감싸는 기능이 있어 편리하겠다는 생각이 들었다.
하지만, Java 관련 개발 작업 시 Eclipse를 주로 사용하는 사람에게
그 기능을 사용하기 위해 다시 AcroEdit를 실행하고 다시 스크립트를 실행하는게 왠지
불편했다.
이럴바에 간단하게 만들어보자라는 취지로 해 봤다.

DB 연동해서 개발을 하다 보면 툴에서 SQL을 테스트하고 작성 완료해서
실제 Java 코딩으로 옮겨야 할 경우 일일이 코드에 삽입을 하게 된다.
예를 들어,
String sql   = "select a, b, c, d";
         sql += "   from tablename";
         sql += " where a = b      ";
         sql += "     and c = '1234';

이런 식의 코드나 StringBuffer 클래스를 이용하는

StringBuffer sql = new StringBuffer();
sql.append("select a, b, c, d \n");
sql.append("   from tablename \n");
sql.append(" where a = b      \n");
sql.append("     and c = '1234' \n);

이런 코드를 생성하기 마련이다.
물론, iBATIS를 이용하는 경우도 많지만 iBATIS를 이용하지 않을 경우에
위와 같은 일은 참 번거로운 일이 될것이다.

차라리, 이클립스에 실행 가능한 자바 클래스를 하나 만들어서 필요할 때 마다
실행해서 복사 후 붙여넣기를 하면 좋겠다는 생각이다.

/**
* 복사한 SQL문을 Java에서 사용 가능하도록 Code로 변환한다.
* @author dawnst
* 2010.03.29
*/

public class Sql2Java
{
   public static void main(String[] args)
   {   
       Sql2Java sj = new Sql2Java();
       System.out.println(sj.sql2Java().toString());
   }

   /**
    * ClipBoard 에 있는 내용을 반환한다.
    * @return String
    */
   private String getClipBoard()
   {
       String ret = "";
      
       java.awt.datatransfer.Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard();
       java.awt.datatransfer.Transferable data = clipboard.getContents(this);
       try
       {
           ret = (String) data.getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor);
       }
       catch (java.awt.datatransfer.UnsupportedFlavorException e)
       {
           e.printStackTrace();
       }
       catch (java.io.IOException e)
       {
           e.printStackTrace();
       }
      
       return ret;
   }
  
   /**
    * ClipBoard의 SQL문을 Java의 SQL문 형태로 변환해 반환한다.
    * @return StringBuffer
    */
   private StringBuffer sql2Java()
   {
       String clipBoard = getClipBoard();
       StringBuffer buffer = new StringBuffer();
      
       if(clipBoard != null && clipBoard.length() > 0)
       {
           String [] line = clipBoard.split("\n");
          
           // SQL문 Line의 문자수를 세어 가장 많은 문자수를 찾는다.
           int maxCharLength = 0;
           for(int i=0; i<line.length; i++)
           {
               if(maxCharLength < line[i].length())
               {
                   maxCharLength = line[i].length();
               }
           }
          
          
           for(int i=0; i<line.length; i++)
           {
               if(i==0)
               {
                   buffer.append("StringBuffer sql = new StringBuffer();\n");
                   buffer.append("sql.             append(\""+line[i]);
               }
               else
               {
                   buffer.append("sql.append(\"\\n\").append(\""+line[i]);

               }
              
               // 최대 SQL 문자수 보다 적은 Line은  최대 문자수 만큼 공백으로 자리수를 채운다.
               for(int j=0; j<maxCharLength - line[i].length(); j++)
               {
                   buffer.append(" ");
               }
              
               buffer.append("\");");
               buffer.append("\n");
           }
       }
      
       return buffer;
   }
}

사용 방법은
1. 이클립스에 프로젝트를 하나 만들던가, 아니면, 기존에 만들어진 프로젝트에 클래스 하나를 만들어 run에 등록한다.
2. SQL 툴에서 만들어지 SQL문을 복사(Ctl+c)한다
3. run에 등록된 내용을 실행한다.
4. 출력창에 출력된 Java SQL 코드를 복사해 개발하는데 붙여넣기 등, 이용한다.


실행 결과
StringBuffer sql = new StringBuffer();
sql.             append("select a, b, c, d");
sql.append("\n").append("  from tablename ");
sql.append("\n").append(" where a = b     ");
sql.append("\n").append("   and c = '1234'");

2010/03/30 15:53 2010/03/30 15:53