먼저 DB에 테이블을 만들고, 이를 통해 구문을 만들어내면 VO 등을 작업할 때 편하게 이용할 수 있음.

자바에는 ResultSetMetaData라 하는 테이블의 속성 저장용 인터페이스가 있음. 

여기에 저장한 후 메서드를 통해 총 열 수, 열 이름, 속성 등을 불러옴.

불러온 속성은 int 값이고, class types를 확인하면 각 int에 따른 값 속성을 볼 수 있음(Constant Field Values 참고).

클래스를 실행하면 콘솔창에 값이 뜨고, 이를 통해 작업을 할 수 있음.




package org.soju.foodstore.util;

import java.sql.ResultSetMetaData;

public class VOMaker {


public static void main(String[] args) throws Exception {

final String query = "select * from tbl_menu where rownum=1";


new SQLAgent() {

@Override

protected void doJob() throws Exception {

pstmt=con.prepareStatement(query);

rs = pstmt.executeQuery();

ResultSetMetaData meta = rs.getMetaData();

int colCount = meta.getColumnCount();

System.out.printf("컬럼수: %d \n", colCount);

for (int i = 1; i <= colCount; i++) {

int type = meta.getColumnType(i);

//System.out.println(type);

String javaType = getType(type); 

String name = meta.getColumnName(i).toLowerCase();

//System.out.println(name);

System.out.printf("private %s %s;\n", javaType, name);

}

}


private String getType(int type){

String result = "String";

switch (type) {

case 2:

result = "Integer";

break;

case 93:

result = "Date";

break;


default:

break;

}

return result;

}

}.doExecute();

}

}



Posted by 타다키치
,