본문 바로가기

웹개발/DB

[Oracle] 테이블의 컬럼명을 쿼리를 이용하여 Camel표기법과 VO 변수 데이터로 자유롭게 변환 하자


소개


 DB의 테이블들의 경우 컬럼명이 보통 date_format 형태로 되어있고, 이를 내려 받거나 변수 처리를 해야 할 VO의 필드값의 경우 dateFormat형태의 Camel표기법 형태로 되어 있는 경우가 많습니다.

 컬럼 or 필드 값을 입력되어 있다면, 이전에 소개를 시켜드린 AnyEdit을 이용해 간단히 변경 할 수 있지만 (http://devchul.tistory.com/7) 보통 입력이 안되어 있으실 겁니다. 

 이러한 경우 간단히 값을 입력 할 수 있는 쿼리를 소개 하려 합니다.

준비

컬럼 값을 입력 할 테이블을 준비합니다.

- 테이블명 : T_BRAND


적용

1) 컬럼명 반환 및 별칭 Camel표기법 전환


***.xml 코딩하실 때 사용 하게 될 쿼리로

 위에 테이블명 기준으로 쿼리를 돌리필드명 AS Camel표기법where 조건 mybatis기준으로 변환됩니다.

[쿼리]

SELECT ','

         || A.COLUMN_NAME
         || ' AS '
         || LOWER(SUBSTR(A.CAMEL_CASE,1, 1))
         || SUBSTR(A.CAMEL_CASE,2) AS field
        , '#{'||A.CAMEL_CASE|| '}' AS myBatis
FROM (
     SELECT 
COLUMN_NAME ,
         REPLACE(initcap(COLUMN_NAME),'_') AS CAMEL_CASE
     FROM ALL_TAB_COLUMNS
     WHERE TABLE_NAME= '테이블명'
     ORDER BY COLUMN_ID

     )A;



[결과]


2) 컬럼명을 JAVA VO 변수로 전환

 해당 쿼리를 돌리시면 vo 변수를  데이타 형식에 맞게 변환해줍니다.

[쿼리]

SELECT 
  'private ' || 
  (CASE A.DATA_TYPE
           WHEN 'NUMBER'
           THEN 'long'
           WHEN 'DATE'
           THEN 'Date'
           WHEN 'VARCHAR2'
           THEN 'String'
           WHEN 'CHAR'
           THEN 'String'
           ELSE ''
       END
    ) || 
   ' ' || 
   LOWER(SUBSTR(A.CAMEL_CASE,1, 1)) || 
   SUBSTR(A.CAMEL_CASE,2) || 
   ';'AS RESULT
FROM (
  SELECT 
    COLUMN_NAME, 
    DATA_TYPE,
    REPLACE(initcap(COLUMN_NAME),'_') AS CAMEL_CASE
   FROM ALL_TAB_COLUMNS
   WHERE TABLE_NAME= '테이블명'
   ORDER BY COLUMN_ID
)A;


[결과]




※ 오라클 기준입니다.