행위

Mybatis 파서

DB CAFE

thumb_up 추천메뉴 바로가기


1 모듈 설치[편집]

pip install mybatis-mapper2sql

2 사용법[편집]

import mybatis_mapper2sql
# Parse Mybatis Mapper XML files
mapper, xml_raw_text = mybatis_mapper2sql.create_mapper(xml='mybatis_mapper.xml')
# Get All SQL Statements from Mapper
statement = mybatis_mapper2sql.get_statement(mapper)
# Get SQL Statement By SQLId
statement = mybatis_mapper2sql.get_child_statement(mapper, sql_id)

2.1 MyBatis Xml 파싱하여 오라클 디비에 입력 처리[편집]

  • mybatis_to_db.py
#-*- coding: utf-8 -*-

import cx_Oracle
import mybatis_mapper2sql
import os
import sys

# 64bit Oracle Clinet 미설치시 사용
LOCATION = r"D:\oracle_inst_64\instantclient_21_10"
os.environ["PATH"] = LOCATION + ";" + os.environ["PATH"]
#os.environ["NLS_LANG"]="AMERICAN_AMERICA.AL32UTF8"
# D:\oracle_inst_64\instantclient_21_10

mapper, xml_raw_text = mybatis_mapper2sql.create_mapper(xml="d:\\python\\sql\\"+sys.argv[1]) # 처리할 파일을 1번째 파라미터로 받음. 
# statement = mybatis_mapper2sql.get_statement(mapper, result_type='raw', reindent=True, strip_comments=True) # raw형태 파일로 처리 (파일로 저장 )
statement = mybatis_mapper2sql.get_statement(mapper, result_type='list', reindent=True, strip_comments=True)  # list형으로 리턴 (DB에 입력 처리 편리)

con = cx_Oracle.connect("COMMON", "1234", "111.222.333.444:49154/ORCLPDB1", encoding="UTF-8")
cursor = con.cursor()

# statement는 리스트 + 딕셔너리 형태로 구성됨 [{키:값},{키:값}] => 디비에 입력하기위해서 튜플형태로 변경 list(zip(d.keys(), d.values())

for d in statement:
    cursor.executemany("INSERT INTO URP_XML_PARSE (FILE_NM,SQL_ID,SQL_TEXT) values ('"+sys.argv[1]+"',:1,:2)",list(zip(d.keys(), d.values())))
con.commit()
  • 실행 방법
python mybatis_to_db.py test.xml

2.2 MyBatis Xml 파싱하여 파일로 출력 처리[편집]