# generate.py BEGIN -------------
import mysql.connector
from jinja2 import Environment, FileSystemLoader
# MariaDB 접속 설정
def get_db_connection():
return mysql.connector.connect(
host="", # MariaDB 호스트
user="", # MariaDB 사용자
password="", # MariaDB 비밀번호
database="" # 사용할 데이터베이스
)
# 테이블 정보 가져오기
def get_table_comment(table_name):
connection = get_db_connection()
cursor = connection.cursor()
cursor.execute(f"""SELECT
TABLE_COMMENT
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME = '{table_name}'
""")
table_comment = cursor.fetchone()[0]
cursor.close()
connection.close()
return table_comment
# 테이블 컬럼 정보 가져오기
def get_table_columns(table_name):
connection = get_db_connection()
cursor = connection.cursor()
cursor.execute(f"""SELECT
column_name,
column_type,
column_comment
FROM
information_schema.columns
where 1=1
and table_name = '{table_name}' """)
columns = cursor.fetchall()
cursor.close()
connection.close()
return columns
# Jinja2 템플릿을 사용하여 Java 클래스를 생성
def generate_java_code(table_comment, columns, class_name):
# Jinja2 환경 설정
env = Environment(loader=FileSystemLoader("templates"))
# 템플릿 파일 로딩
template = env.get_template("entity_template2.java.j2")
# 테이블 컬럼에 맞는 데이터 생성
column_info = []
for column in columns:
column_info.append({
"name": to_camel_case(column[0]),
"type": "int" if "int" in column[1].lower()[0:3] else "String",
"comment": column[2],
"name2": column[0]
})
# 템플릿 렌더링
java_code = template.render(table_name="MBR_ACNT", table_comment=table_comment, class_name=class_name, columns=column_info)
# 생성된 Java 코드 출력
return java_code
# 파일로 저장
def save_java_file(java_code, class_name):
file_name = f"{class_name}.java"
with open(file_name, "w") as file:
file.write(java_code)
print(f"Java 파일이 생성되었습니다: {file_name}")
def to_camel_case(s):
# 문자열을 '_' 기준으로 분리
words = s.split('_')
# 첫 단어는 소문자로, 나머지 단어는 첫 글자만 대문자로 변환
return words[0].lower() + ''.join(word.capitalize() for word in words[1:])
# eg T_MBR_ACNT -> MbrAcnt
def to_class_name(s):
# 문자열을 'T_' 기준으로 분리
words = s.split('_')
return ''.join(word.capitalize() for word in words[1:])
def main():
table_name = "T_MY_TABLE"
class_name = to_class_name(table_name)
table_comment = get_table_comment(table_name) # 테이블 주석
columns = get_table_columns(table_name)
java_code = generate_java_code(table_comment, columns, class_name)
save_java_file(java_code,class_name)
if __name__ == "__main__":
main()
# generate,py END ----
package kwwa.lms.bo.mbrAcnt.domain.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
// {{ table_name }} 테이블 : {{ table_comment }} 테이블
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class {{ class_name }} {
{% for column in columns %}
private {{ column.type }} {{ column.name }}; // {{ column.comment }} ({{ column.name2 }})
{%- endfor %}
}