템플릿 변수
Code Genie 템플릿 작성시, 사용 가능한 변수들에 대해 설명합니다.
최상위 항목
최상위에는 다음과 같은 변수들을 사용할 수 있습니다.
key | type | example | description |
---|---|---|---|
entity | Entity | 현재 선택된 entity 정보 | |
table | Table | 현재 선택된 테이블 정보 | |
databaseInfo | DatabaseInfo | 데이터베이스 정보 | |
projectConfig | ProjectConfig | 프로젝트 설정 정보 | |
var | map | {"package": {"config":"config", "core":"core"}} | 템플릿에서 지정한 변수를 프로젝트 재정의한 정보 |
paid | bool | true | 유료 서비스 여부 |
env | map | {"module":"core", "basePackage":"com.unvus.iflex","subPackage":"core"} | 현재 템플릿의 module 설정 정보 - ProjectConfig > mudules 항목 참고 |
Entity
Entity
는 Database Table 정보를 기반으로 Java Domain 정보로 변환한 객체입니다.
CodeGenie 와 설정에 의해 기본 변환되는 항목 외에, 사용자가 추가로 부가 정보를 입력한 내용이 반영됩니다.
Entity
에는 다음과 같은 속성이 있습니다.
key | type | example | description |
---|---|---|---|
alias | string | bi | SQL 에서 사용할 테이블 alias |
annotationList | string[] | ['com.unvus.MyAnnotation'] | Class 레벨에 추가할 annotation list |
comment | string/null | 게시물 | Class 레벨 주석 - 기본값은 Table 레벨 주석 |
extendsClass | string | com.unvus.MyAbstractClass | 상속받을 상위 클래스 FQCN |
fieldMap | map<string, Field> | fields 를 table column 명을 key 로 구성하여 map 으로 변환 | |
fields | Field[] | Class 내 멤버 필드들. Table 의 컬럼 기반으로 자동생성 | |
implementsInterfaceList | string[] | [{"name":com.unvus.MyInterface", "used":true}] | Class 가 구현할 상위 interface 리스트 |
name | string | BoardItem | Class 명 |
sequenceName | string | SEQ_BOARD_ITEM_ID | SQL 에서 사용할 sequence 명 (Oracle) |
subPackage | string | board | 이 Class 의 상위 패키지명 |
useBusinessKey | bool | false | 비즈니스키 사용여부. table pk 와 관계 없이, 특정 column 들을 pk 로 간주하고 싶은 경우 사용 |
useCustomId | bool | false | PK 를 자동 생성값이 아닌 직접 입력 받아서 사용하려는 경우 true 로 설정 |
useMarkAsDelete | bool | false | delete 작업시 실제 테이블에서 삭제하지 않고 flag 처리 하려는 경우 true 로 설정 |
var | string | boardItem | Class 인스턴스의 변수명 |
snakeLower | string | board_item | Class 명을 소문자 snake case 로 반환 |
snakeUpper | string | BOARD_ITEM | Class 명을 대문자 snake case 로 반환 |
kebabLower | string | board-item | Class 명을 소문자 kebab case 로 반환 |
kebabUpper | string | BOARD-ITEM | Class 명을 대문자 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
에는 다음과 같은 속성이 있습니다.
key | type | example | description |
---|---|---|---|
businessKey | bool | false | Entity의 useBusinessKey 가 true 경우 현재 컬럼이 businessKey 인지 여부 |
column | Column | 현재 field 에 해당하는 column 정보 | |
comment | string | field 설명 - 기본값은 database column 의 주석 | |
defaultValue | string/null | Y | 값이 없을때 기본값. column 의 기본값 기반으로 자동생성 |
deletedMark | string | false | 이 field 가 삭제 여부를 나타내는 항목인지 여부 |
mappedType | MappedType | {"fullJavaType": "java.lang.Long","javaType": "Long","tsType": "number","type": "M_LONG"} | 이 field 의 java type 정보. mappedUserType 항목이 설정되어 있으면, 이 값은 무시 |
mappedUserType | string | com.unvus.util.JsonMap | 이 field 의 custom type. 이 항목이 설정되어 있으면 mappedType 은 무시 |
metaAttributes | map<string, string>[] | [{"name": "typeHandler","value": "com.unvus.config.mybatis.type.VarcharJsonTypeHandler"}] | 추가 속성. 각 템플릿팩 별로 추가할 수 있는 값이 다르다 |
name | string | createdBy | field 명. 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 정보입니다..
key | type | example | description |
---|---|---|---|
id | string | 0:iflexdb:nv_board_item | CodeGenie 내부에서 할당한 id 값 |
connectionId | number | 0 | 이 테이블이 속한 커넥션의 id |
schemaName | string | iflexdb | 이 테이블이 속한 schema 이름 |
type | string | TABLE | TABLE 인지, VIEW 인지 구분값 |
name | string | nv_board_item | 테이블명 |
remarks | string | 게시물 | 테이블 주석 |
primaryKeys | string[] | ['bd_id'] | PK 를 구성하는 column 명의 리스트 |
importedKeys | map[] | 아래 샘플 참고 | 이 테이블에서 참조하는 외래키 정보 |
indexes | map[] | 아래 샘플 참고 | 이 테이블의 인덱스 정보 |
foreignKeysByName | map<string, map> | 아래 샘플 참고 | fk 를 fk-name 기준으로 담음 |
indexHoldersByName | map<string, map> | 아래 샘플 참고 | index 를 인덱스명 기준으로 담음 |
uniqueIndexHolders | map[] | 아래 샘플 참고 | 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 정보.
key | type | example | description |
---|---|---|---|
autoIncrement | bool | false | 자동 증가 컬럼 여부, 테이블 정의에 의해 결정된다. |
dbProdName | string | mariadb | 데이터베이스명 |
decimalDigits | number | -127 | JDBC metadata 의 DECIMAL_DIGITS 값. Field 의 mappedType 을 추정하는데 사용 |
defaultValue | any/null | 컬럼 기본값 | |
enumValues | string[] | 사용가능한 enum values. 직접 사용되는 값은 아님 | |
metaAttributes | map<string, string>[] | 컬럼의 추가 속성 | |
name | string | acnt_type | 컬럼명 |
nullable | bool | false | 널 허용 여부 |
ordinalPosition | number | 테이블내 컬럼의 순서 (1부터 시작) | |
remarks | string | 컬럼 주석 | |
size | number | 20 | 컬럼 size |
type | string | VARCHAR | 컬럼의 database data type |
typeView | string | VARCHAR(20) | type 과 size 로 추정한 실제 컬럼 타입 |
DatabaseInfo
key | type | example | description |
---|---|---|---|
databaseMajorVersion | number | 10 | 현재 table 이 속하는 Database 의 Major 버전 |
databaseMinorVersion | number | 11 | 현재 table 이 속하는 Database 의 Minor 버전 |
databaseProductName | string | MariaDB | 현재 table 이 속하는 Database 의 이름 |
databaseProductVersion | string | 10.11.9-MariaDB-ubu2204 | 현재 table 이 속하는 Database 의 버전 포함 전체 이름 |
driverMajorVersion | number | 3 | 현재 table 이 속하는 Database 의 JDBC Major 버전 |
driverMinorVersion | number | 3 | 현재 table 이 속하는 Database 의 JDBC Minor 버전 |
driverVersion | string | 3.3.2 | 현재 table 이 속하는 Database 의 JDBC Full 버전 |
driverName | string | MariaDB Connector/J | 현재 table 이 속하는 Database 의 JDBC 이름 |
extraInfo | string | 현재 table 이 속하는 Database 의 JDBC 추가 속성 |
ProjectConfig
key | type | example | description |
---|---|---|---|
connections | Connection[] | 현재 프로젝트에서 설정된 JDBC 연결 정보 목록 | |
convertConfig | ConvertConfig | 현재 프로젝트에서 설정된 변환 설정 정보 | |
id | string | genie-market | CodeGenie 에서 설정한 프로젝트 Project ID |
name | string | Genie Market | CodeGenie 에서 설정한 프로젝트 Project Name |
idVar | string | genieMarket | Project ID 를 Camel-Case 로 변경한 값 - 단 첫글자는 소문자로 |
idName | string | GenieMarket | Project ID 를 Camel-Case 로 변경한 값 - 단 첫글자는 대문자로 |
basePackage | string | com.unvus.genie.market | CodeGenie 에서 설정한 프로젝트 Base Package |
modules | Module[] | 프로젝트에서 사용중인 모듈 목록 |
Connection
key | type | example | description |
---|---|---|---|
id | number | 0 | CodeGenie 에서 부여한 커넥션 ID |
name | string | genie-market | 커넥션명 |
columnRenamerList | ColumnRenamer[] | Column 명을 Field 명으로 변경하기 위한 Global 설정. 각 테이블마다 별도 설정 가능 | |
database | string | mydb | database 명 |
databaseInfo | DatabaseInfo | 현재 커넥션의 Database 정보 | |
driver | string | org.mariadb.jdbc.Driver | jdbc driver 클래스명 |
host | string | myhost.com | jdbc 연결 host 정보 |
port | number | 3306 | jdbc 연결 port 정보 |
user | string | geniemarket | jdbc 연결 user 정보 |
password | string | MyPassWORD098 | jdbc 연결 password 정보 |
url | string | jdbc:mariadb://myhost.com:3306/mydb | 전체 jdbc 연결 주소 정보 |
schemaPatterns | string[] | ["mydb"] | 전체 스키마 중, 이 연결에서 사용할 스키마명 목록 |
properties | Map<String,String>[] | [{"useUnicode":true, "characterEncoding": "utf8"}] | jdbc 연결 추가 속성 정보 |
MappedType
Field 의 자바 타입 정보
key | type | example | description |
---|---|---|---|
fullJavaType | string | java.lang.Long | Java Type 의 FQCN |
javaType | string | Long | Java Type 명 |
tsType | string | number | typescript 타입 |
type | string | M_LONG | CodeGenie 내부 관리용 타입 |
ConvertConfig
프로젝트에서 설정된 Global 변환 설정 정보
key | type | example | description |
---|---|---|---|
auditTable | Table | CodeGenie 에서 지정한 감사 관련 테이블 정보 | |
creationAuthorList | string[] | ["creationAuthor", "createdBy"] | 생성자 항목 후보 field 명 목록 |
creationDateList | string[] | ["creationDate", "createdDt"] | 생성일시 항목 후보 field 명 목록 |
lastModificationAuthorList | string[] | ["lastModificationAuthor", "modifiedBy"] | 수정자 항목 후보 field 명 목록 |
lastModificationDateList | string[] | ["lastModificationDate", "modifiedDt"] | 수정일시 항목 후보 field 명 목록 |
useCatalog | bool | true | sql 생성시 catalog 정보를 포함할것인지 여부 |
useSchema | bool | true | sql 생성시 schema 정보를 포함할것인지 여부 |
Module
소스 모듈(일반적으로 서브 프로젝트) 정보
key | type | example | description |
---|---|---|---|
id | string | batch | 모듈 아이디 |
installUsed | bool | true | CodeGenie 에서 템플릿 변환결과 install 시 이 모듈에서도 install 할지 여부 |
name | string | batch | 모듈 명 |
subPackage | string | batch | ProjectConfig 의 basePackage 뒤에 붙을 서브 패키지명 |
type | string | batch | 모듈의 타입 |