템플릿 기반 Code gen 에 대해서
- 작성자 :
- 이*일
- 작성일 :
- 2009-10-21 15:11:24
- 조회수 :
- 4,154
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
이클립스 플러그 인중 템플릿 기반 Code gen 을 사용중에
VO 를 생성하는 벨로시티 파일을 보면 ${attribute.javaType} 과 같이
정의된 부분이 있습니다.
db 컬럼 타입과 java 타입을 매칭시키는 부분 같은데요, 이부분은 프로젝트에
맞게 커스터마이징이 가능한지요?
예를 들면 현재 제공되는 템플릿에서는 oracle number 형이 java의 BigDecimal 로
매핑이 되어 파일이 생성됩니다. 이를 java 의 Double 나 Long 로 생성되게 할 수
있나 궁금합니다.
그리고 VO 생성 시 테이블의 PK 에 대한 컬럼만 가지고 오는 변수가 정의되어 있는지요?
그럼 답변 부탁드립니다.
VO 를 생성하는 벨로시티 파일을 보면 ${attribute.javaType} 과 같이
정의된 부분이 있습니다.
db 컬럼 타입과 java 타입을 매칭시키는 부분 같은데요, 이부분은 프로젝트에
맞게 커스터마이징이 가능한지요?
예를 들면 현재 제공되는 템플릿에서는 oracle number 형이 java의 BigDecimal 로
매핑이 되어 파일이 생성됩니다. 이를 java 의 Double 나 Long 로 생성되게 할 수
있나 궁금합니다.
그리고 VO 생성 시 테이블의 PK 에 대한 컬럼만 가지고 오는 변수가 정의되어 있는지요?
그럼 답변 부탁드립니다.
A
안녕하세요 김원일님
현재 구현된 템플릿 기반 코드 생성기능은 DBMS의 정수 타입은 BigDecimal로 생성되도록 개발되었습니다. 하지만 본 기능은 템플릿 기반으로 구현되어있으므로 Velocity의 VTL 문법을 응용하신다면 java.math.BigDecimal을 Long, Double로 생성되도록 응용하실 수는 있습니다.
템플릿 파일(VM)을 편집기로 연후, "java.math.BigDecimal" 의 값을 Long 또는 Double로 변환하는 코드를 추가하는 방법입니다. 아래는 VO에서 Long Type로 변환하는 VM 파일의 샘플입니다. 참고하셔서 프로젝트에 적용하시기 바랍니다.
[샘플템플릿 시작(Sample2VO.vm)]
##
#set($voPackage="${voPackage}")
#set($voClassName="${model.entity.pcName}VO")
#set($defaultVoClassName="${model.entity.pcName}DefaultVO")
##
##
package $voPackage;
/**
* @Class Name : ${voClassName}.java
* @Description : ${model.entity.pcName} VO class
* @Modification Information
*
* @author ${author}
* @since ${createDate}
* @version 1.0
* @see
*
* Copyright (C) All right reserved.
*/
public class ${voClassName} extends ${defaultVoClassName}{
private static final long serialVersionUID = 1L;
#set($i=0)
#foreach($attribute in $model.attributes)
#if( $attribute.javaType == "java.math.BigDecimal")
#set( $attribute.javaType = "Long" )
#end
/** ${attribute.name} */
private ${attribute.javaType} ${attribute.ccName};
#set($i=$i+1)
#end
##
#set($i=0)
#foreach($attribute in $model.attributes)
#if( $attribute.javaType == "java.math.BigDecimal")
#set( $attribute.javaType = "Long" )
#end
public ${attribute.javaType} get${attribute.pcName}() {
return this.${attribute.ccName};
}
public void set${attribute.pcName}(${attribute.javaType} ${attribute.ccName}) {
this.${attribute.ccName} = ${attribute.ccName};
}
#set($i=$i+1)
#end
}
[샘플템플릿 끝(Sample2VO.vm)]
※추후 플러그인 버전 업그레이드시 변경한 템플릿 파일이 덮어 써질 수 있으므로 주의하시기 바랍니다.
요청하신 PK의 속성은 $model.primaryKeys 에 배열의 형태로 전달됩니다.
감사합니다.
현재 구현된 템플릿 기반 코드 생성기능은 DBMS의 정수 타입은 BigDecimal로 생성되도록 개발되었습니다. 하지만 본 기능은 템플릿 기반으로 구현되어있으므로 Velocity의 VTL 문법을 응용하신다면 java.math.BigDecimal을 Long, Double로 생성되도록 응용하실 수는 있습니다.
템플릿 파일(VM)을 편집기로 연후, "java.math.BigDecimal" 의 값을 Long 또는 Double로 변환하는 코드를 추가하는 방법입니다. 아래는 VO에서 Long Type로 변환하는 VM 파일의 샘플입니다. 참고하셔서 프로젝트에 적용하시기 바랍니다.
[샘플템플릿 시작(Sample2VO.vm)]
##
#set($voPackage="${voPackage}")
#set($voClassName="${model.entity.pcName}VO")
#set($defaultVoClassName="${model.entity.pcName}DefaultVO")
##
##
package $voPackage;
/**
* @Class Name : ${voClassName}.java
* @Description : ${model.entity.pcName} VO class
* @Modification Information
*
* @author ${author}
* @since ${createDate}
* @version 1.0
* @see
*
* Copyright (C) All right reserved.
*/
public class ${voClassName} extends ${defaultVoClassName}{
private static final long serialVersionUID = 1L;
#set($i=0)
#foreach($attribute in $model.attributes)
#if( $attribute.javaType == "java.math.BigDecimal")
#set( $attribute.javaType = "Long" )
#end
/** ${attribute.name} */
private ${attribute.javaType} ${attribute.ccName};
#set($i=$i+1)
#end
##
#set($i=0)
#foreach($attribute in $model.attributes)
#if( $attribute.javaType == "java.math.BigDecimal")
#set( $attribute.javaType = "Long" )
#end
public ${attribute.javaType} get${attribute.pcName}() {
return this.${attribute.ccName};
}
public void set${attribute.pcName}(${attribute.javaType} ${attribute.ccName}) {
this.${attribute.ccName} = ${attribute.ccName};
}
#set($i=$i+1)
#end
}
[샘플템플릿 끝(Sample2VO.vm)]
※추후 플러그인 버전 업그레이드시 변경한 템플릿 파일이 덮어 써질 수 있으므로 주의하시기 바랍니다.
요청하신 PK의 속성은 $model.primaryKeys 에 배열의 형태로 전달됩니다.
감사합니다.