SELECT
  concat('private String ', VALUE_NAME, ';') AS beans,
  concat('<result property="', VALUE_NAME, '" column="', COLUMN_NAME, '"/>') as mapper,
  concat('<input type="text" name="', COLUMN_NAME, '" id="', COLUMN_NAME, '"/>') as html
FROM (
    SELECT
        if (
            instr(VALUE_NAME, '_') > 0,
            replace(VALUE_NAME,
                substring(VALUE_NAME, instr(VALUE_NAME, '_'), 2),
                upper(substring(VALUE_NAME, instr(VALUE_NAME, '_')+1, 1))),
            VALUE_NAME
        ) AS VALUE_NAME, COLUMN_NAME
    FROM (
        SELECT
            if (
                instr(COLUMN_NAME, '_') > 0,
                replace(COLUMN_NAME,
                    substring(COLUMN_NAME, instr(COLUMN_NAME, '_'), 2),
                    upper(substring(COLUMN_NAME, instr(COLUMN_NAME, '_')+1, 1))),
                COLUMN_NAME
            ) AS VALUE_NAME, COLUMN_NAME
        FROM
          INFORMATION_SCHEMA.COLUMNS
        WHERE
          TABLE_SCHEMA = '데이터베이스 이름'
          AND TABLE_NAME = '테이블 이름'
        ORDER BY
          TABLE_NAME, ORDINAL_POSITION
    ) as TBL
) as TBL2


SQL 코드조각


mysql에서 실행하면 Mapper 관련 문자열을 뱉어준다.


※ 모두 String 뱉으므로 다른 데이터 타입인 경우 잘 수정해줘야 함


=====================================================================





# name은 테이블이름, c에는 각 컬럼이름


name = "student";


c = ["studno", "name", "userid", "grade", "idnum", "birthdate", "tel", "height", "weight", "deptno", "profno"];


a = []; # 원소마다 _를 기준으로 split하여 배열로 저장


s = ""


insert = "INSERT INTO "+name+" (";


i1 = ") VALUES ("


i2 = ");";


# insert into table_name (여기부분)

for i in range(0, len(c)) :

    if(i + 1 < len(c)) :

        insert += c[i] + ", "

    else :

        insert += c[i]


insert += i1


# c 배열의 원소마다 _를 기준으로 split하여 s 빈 문자열에 저장

# 비어있는 ss 문자열에 s 원소를 하나씩 꺼낼 때 첫문자를 대문자로 바꿔서 저장

# 이어서 저장된 문자열 ss를 a 배열에 첫부분과 같이 추가

for i in range(0, len(c)) :

    if(c[i].find('_') != -1) :

        s = c[i].split("_")

        ss = ""

        for i in range(1, len(s)) :

            ss += s[i].capitalize()

        a.append(s[0]+ss)

    else :

        a.append(c[i])


# values (여기부분)

for i in range(0, len(a)) :

    if(i + 1 < len(a)) :

        insert += "#{" + a[i] + "}, "

    else :

        insert += "#{" + a[i] + "}"


insert += i2


print(insert+"\n")



# c[0]은 primary key라고 기준을 잡는다

delete = "DELETE FROM " + name + " WHERE " + a[0] + "=#{" + a[0] + "}"


print(delete+"\n")




update = "UPDATE "+name+" SET ";


cc = ""


a = [];


s = ""


for i in range(0, len(c)) :

    if(c[i].find('_') != -1) :

        s = c[i].split("_")

        ss = ""

        for i in range(1, len(s)) :

            ss += s[i].capitalize()

        a.append(s[0]+ss)

    else :

        a.append(c[i])


for i in range(0, len(c)) :

    if(i + 1 < len(c)) :

        cc += c[i] + "=#{" + a[i] + "}, "

    else :

        cc += c[i] + "=#{" + a[i] + "}"


update += cc + " WHERE " + a[0] + "=#{" + a[0] + "}"


print(update+"\n")


select = "SELECT "


for i in range(0, len(c)) :

    if (i + 1 < len(c)) :

        select += c[i] + ", "

    else :

        select += c[i]


select += " FROM " + name + " WHERE " + a[0] + "=#{" + a[0] + "}"


print(select+"\n")


========================================================================



※ datetime의 출력형태를 바꿔야 하는 경우 그 부분만 수정


WHERE절 조건 주의

+ Recent posts