Skip to content

템플릿 변수

Code Genie 템플릿 작성시, 사용 가능한 변수들에 대해 설명합니다.

최상위 항목

최상위에는 다음과 같은 변수들을 사용할 수 있습니다.

keytypeexampledescription
entityEntity현재 선택된 entity 정보
tableTable현재 선택된 테이블 정보
databaseInfoDatabaseInfo데이터베이스 정보
projectConfigProjectConfig프로젝트 설정 정보
varmap{"package": {"config":"config", "core":"core"}}템플릿에서 지정한 변수를 프로젝트 재정의한 정보
paidbooltrue유료 서비스 여부
envmap{"module":"core", "basePackage":"com.unvus.iflex","subPackage":"core"}현재 템플릿의 module 설정 정보 - ProjectConfig > mudules 항목 참고

Entity

Entity 는 Database Table 정보를 기반으로 Java Domain 정보로 변환한 객체입니다.
CodeGenie 와 설정에 의해 기본 변환되는 항목 외에, 사용자가 추가로 부가 정보를 입력한 내용이 반영됩니다.

Entity 에는 다음과 같은 속성이 있습니다.

keytypeexampledescription
aliasstringbiSQL 에서 사용할 테이블 alias
annotationListstring[]['com.unvus.MyAnnotation']Class 레벨에 추가할 annotation list
commentstring/null게시물Class 레벨 주석 - 기본값은 Table 레벨 주석
extendsClassstringcom.unvus.MyAbstractClass상속받을 상위 클래스 FQCN
fieldMapmap<string, Field>fields 를 table column 명을 key 로 구성하여 map 으로 변환
fieldsField[]Class 내 멤버 필드들. Table 의 컬럼 기반으로 자동생성
implementsInterfaceListstring[][{"name":com.unvus.MyInterface", "used":true}]Class 가 구현할 상위 interface 리스트
namestringBoardItemClass 명
sequenceNamestringSEQ_BOARD_ITEM_IDSQL 에서 사용할 sequence 명 (Oracle)
subPackagestringboard이 Class 의 상위 패키지명
useBusinessKeyboolfalse비즈니스키 사용여부. table pk 와 관계 없이, 특정 column 들을 pk 로 간주하고 싶은 경우 사용
useCustomIdboolfalsePK 를 자동 생성값이 아닌 직접 입력 받아서 사용하려는 경우 true 로 설정
useMarkAsDeleteboolfalsedelete 작업시 실제 테이블에서 삭제하지 않고 flag 처리 하려는 경우 true 로 설정
varstringboardItemClass 인스턴스의 변수명
snakeLowerstringboard_itemClass 명을 소문자 snake case 로 반환
snakeUpperstringBOARD_ITEMClass 명을 대문자 snake case 로 반환
kebabLowerstringboard-itemClass 명을 소문자 kebab case 로 반환
kebabUpperstringBOARD-ITEMClass 명을 대문자 kebab case 로 반환

Template 에서 Entity 사용 예. java pojo 클래스 선언부 예시

java
@Data
@Alias("${entity.subPackage}_${entity.var}_")
@Schema(description = "${entity.comment}")
public abstract class ${entity.name}_#if ($entity.extendsClass) extends $skrull.getFullTypeToSimple($entity.extendsClass)#{end} implements Serializable#if ($entity.implementsInterfaceList.length > 0), #end#foreach ($implement in $entity.implementsInterfaceList)#if ($implement.used), $skrull.getFullTypeToSimple($implement.name)#end#end {

Field

Field 는 Database Table 의 Column 정보를 기반으로 Java Field 정보로 변환한 객체입니다.
CodeGenie 와 설정에 의해 기본 변환되는 항목 외에, 사용자가 추가로 부가 정보를 입력한 내용이 반영됩니다.

Field 에는 다음과 같은 속성이 있습니다.

keytypeexampledescription
businessKeyboolfalseEntity의 useBusinessKey 가 true 경우 현재 컬럼이 businessKey 인지 여부
columnColumn현재 field 에 해당하는 column 정보
commentstringfield 설명 - 기본값은 database column 의 주석
defaultValuestring/nullY값이 없을때 기본값. column 의 기본값 기반으로 자동생성
deletedMarkstringfalse이 field 가 삭제 여부를 나타내는 항목인지 여부
mappedTypeMappedType{"fullJavaType": "java.lang.Long","javaType": "Long","tsType": "number","type": "M_LONG"}이 field 의 java type 정보. mappedUserType 항목이 설정되어 있으면, 이 값은 무시
mappedUserTypestringcom.unvus.util.JsonMap이 field 의 custom type. 이 항목이 설정되어 있으면 mappedType 은 무시
metaAttributesmap<string, string>[][{"name": "typeHandler","value": "com.unvus.config.mybatis.type.VarcharJsonTypeHandler"}]추가 속성. 각 템플릿팩 별로 추가할 수 있는 값이 다르다
namestringcreatedByfield 명. column 명 기반으로 자동생성

Template 에서 Field 사용 예. java pojo 클래스 멤버필드 생성 예시

java
#foreach ($field in $entity.fields)
    #if($skrull.isPk($field.column))
    @Schema(description = "${field.comment}", accessMode = READ_ONLY)
    #elseif($skrull.isDateOnly($field))
    @Schema(description = "${field.comment}", example = "2025.12.31")
    #elseif($skrull.isDate($field))
    @Schema(description = "${field.comment}", example = "2025.12.31 19:22:35")
    #else
    @Schema(description = "${field.comment}")
    #end
    @JsonProperty("${field.name}")
    protected $skrull.getFullTypeToSimpleByField($field) $field.name;
#end

Table

JDBC 를 통해 가져온 metadata 를 기반으로 생성된 table 정보입니다..

keytypeexampledescription
idstring0:iflexdb:nv_board_itemCodeGenie 내부에서 할당한 id 값
connectionIdnumber0이 테이블이 속한 커넥션의 id
schemaNamestringiflexdb이 테이블이 속한 schema 이름
typestringTABLETABLE 인지, VIEW 인지 구분값
namestringnv_board_item테이블명
remarksstring게시물테이블 주석
primaryKeysstring[]['bd_id']PK 를 구성하는 column 명의 리스트
importedKeysmap[]아래 샘플 참고이 테이블에서 참조하는 외래키 정보
indexesmap[]아래 샘플 참고이 테이블의 인덱스 정보
foreignKeysByNamemap<string, map>아래 샘플 참고fk 를 fk-name 기준으로 담음
indexHoldersByNamemap<string, map>아래 샘플 참고index 를 인덱스명 기준으로 담음
uniqueIndexHoldersmap[]아래 샘플 참고unique index 리스트

Table 구성 map 샘플

json
[
  {
    "fkColumnName": "bi_banner_key",
    "fkName": "nv_banner_item_nv_banner_banner_id_fk",
    "pkColumnName": "banner_id",
    "pkTableCatalog": "iflexdb",
    "pkTableName": "nv_banner",
    "pkTableSchema": null
  }
]
json
[
  {
    "columnName": "bd_id",
    "indexName": "PRIMARY",
    "nonUnique": false
  }
]
json
{
  "FK_NV_MSG_CONFIGURATION_PARAM": {
    "composite": false,
    "fkTableName": "nv_msg_configuration_param",
    "importedKeys": [
      {
        "fkColumnName": "mcp_config_key",
        "fkName": "FK_nv_msg_configuration_param",
        "pkColumnName": "mc_name",
        "pkTableCatalog": "iflexdb",
        "pkTableName": "nv_msg_configuration",
        "pkTableSchema": null
      }
    ],
    "name": "FK_nv_msg_configuration_param",
    "pkTableName": "nv_msg_configuration",
    "simple": true,
    "size": 1
  }
}
json
{
  "PRIMARY": {
    "composite": false,
    "indexes": [
      {
        "columnName": "bd_id",
        "indexName": "PRIMARY",
        "nonUnique": false
      }
    ],
    "name": "PRIMARY",
    "simple": true,
    "size": 1,
    "tableName": "nv_board",
    "unique": true
  }
}
json
[
  {
    "composite": false,
    "indexes": [
      {
          "columnName": "bd_id",
          "indexName": "PRIMARY",
          "nonUnique": false
      }
    ],
    "name": "PRIMARY",
    "simple": true,
    "size": 1,
    "tableName": "nv_board",
    "unique": true
  }
]

Column

JDBC 를 통해 가져온 metadata 를 기반으로 생성된 column 정보.

keytypeexampledescription
autoIncrementboolfalse자동 증가 컬럼 여부, 테이블 정의에 의해 결정된다.
dbProdNamestringmariadb데이터베이스명
decimalDigitsnumber-127JDBC metadata 의 DECIMAL_DIGITS 값. Field 의 mappedType 을 추정하는데 사용
defaultValueany/null컬럼 기본값
enumValuesstring[]사용가능한 enum values. 직접 사용되는 값은 아님
metaAttributesmap<string, string>[]컬럼의 추가 속성
namestringacnt_type컬럼명
nullableboolfalse널 허용 여부
ordinalPositionnumber테이블내 컬럼의 순서 (1부터 시작)
remarksstring컬럼 주석
sizenumber20컬럼 size
typestringVARCHAR컬럼의 database data type
typeViewstringVARCHAR(20)typesize 로 추정한 실제 컬럼 타입

DatabaseInfo

keytypeexampledescription
databaseMajorVersionnumber10현재 table 이 속하는 Database 의 Major 버전
databaseMinorVersionnumber11현재 table 이 속하는 Database 의 Minor 버전
databaseProductNamestringMariaDB현재 table 이 속하는 Database 의 이름
databaseProductVersionstring10.11.9-MariaDB-ubu2204현재 table 이 속하는 Database 의 버전 포함 전체 이름
driverMajorVersionnumber3현재 table 이 속하는 Database 의 JDBC Major 버전
driverMinorVersionnumber3현재 table 이 속하는 Database 의 JDBC Minor 버전
driverVersionstring3.3.2현재 table 이 속하는 Database 의 JDBC Full 버전
driverNamestringMariaDB Connector/J현재 table 이 속하는 Database 의 JDBC 이름
extraInfostring현재 table 이 속하는 Database 의 JDBC 추가 속성

ProjectConfig

keytypeexampledescription
connectionsConnection[]현재 프로젝트에서 설정된 JDBC 연결 정보 목록
convertConfigConvertConfig현재 프로젝트에서 설정된 변환 설정 정보
idstringgenie-marketCodeGenie 에서 설정한 프로젝트 Project ID
namestringGenie MarketCodeGenie 에서 설정한 프로젝트 Project Name
idVarstringgenieMarketProject ID 를 Camel-Case 로 변경한 값 - 단 첫글자는 소문자로
idNamestringGenieMarketProject ID 를 Camel-Case 로 변경한 값 - 단 첫글자는 대문자로
basePackagestringcom.unvus.genie.marketCodeGenie 에서 설정한 프로젝트 Base Package
modulesModule[]프로젝트에서 사용중인 모듈 목록

Connection

keytypeexampledescription
idnumber0CodeGenie 에서 부여한 커넥션 ID
namestringgenie-market커넥션명
columnRenamerListColumnRenamer[]Column 명을 Field 명으로 변경하기 위한 Global 설정. 각 테이블마다 별도 설정 가능
databasestringmydbdatabase 명
databaseInfoDatabaseInfo현재 커넥션의 Database 정보
driverstringorg.mariadb.jdbc.Driverjdbc driver 클래스명
hoststringmyhost.comjdbc 연결 host 정보
portnumber3306jdbc 연결 port 정보
userstringgeniemarketjdbc 연결 user 정보
passwordstringMyPassWORD098jdbc 연결 password 정보
urlstringjdbc:mariadb://myhost.com:3306/mydb전체 jdbc 연결 주소 정보
schemaPatternsstring[]["mydb"]전체 스키마 중, 이 연결에서 사용할 스키마명 목록
propertiesMap<String,String>[][{"useUnicode":true, "characterEncoding": "utf8"}]jdbc 연결 추가 속성 정보

MappedType

Field 의 자바 타입 정보

keytypeexampledescription
fullJavaTypestringjava.lang.LongJava Type 의 FQCN
javaTypestringLongJava Type 명
tsTypestringnumbertypescript 타입
typestringM_LONGCodeGenie 내부 관리용 타입

ConvertConfig

프로젝트에서 설정된 Global 변환 설정 정보

keytypeexampledescription
auditTableTableCodeGenie 에서 지정한 감사 관련 테이블 정보
creationAuthorListstring[]["creationAuthor", "createdBy"]생성자 항목 후보 field 명 목록
creationDateListstring[]["creationDate", "createdDt"]생성일시 항목 후보 field 명 목록
lastModificationAuthorListstring[]["lastModificationAuthor", "modifiedBy"]수정자 항목 후보 field 명 목록
lastModificationDateListstring[]["lastModificationDate", "modifiedDt"]수정일시 항목 후보 field 명 목록
useCatalogbooltruesql 생성시 catalog 정보를 포함할것인지 여부
useSchemabooltruesql 생성시 schema 정보를 포함할것인지 여부

Module

소스 모듈(일반적으로 서브 프로젝트) 정보

keytypeexampledescription
idstringbatch모듈 아이디
installUsedbooltrueCodeGenie 에서 템플릿 변환결과 install 시 이 모듈에서도 install 할지 여부
namestringbatch모듈 명
subPackagestringbatchProjectConfig 의 basePackage 뒤에 붙을 서브 패키지명
typestringbatch모듈의 타입