MBMyBatis 변환기
로딩 중...
MyBatis는 Java 진영에서 가장 널리 사용되는 SQL 매퍼 프레임워크입니다. MyBatis 쿼리에는 #{param}이나 ${param} 같은 파라미터 바인딩과 <if>, <where>, <choose> 같은 동적 태그가 포함되어 있어, 디버깅 시 실제 SQL로 변환하기 어렵습니다. 이 도구는 동적 태그를 파라미터 값에 따라 평가하여 실행 가능한 SQL로 변환하거나, 반대로 일반 SQL을 MyBatis XML mapper 템플릿으로 생성해주는 양방향 변환기입니다.
사용 방법
- 1탭 선택
'MyBatis → SQL' 탭에서는 MyBatis/iBatis 쿼리의 동적 태그를 처리하고 파라미터를 실제 값으로 치환합니다. 'SQL → MyBatis XML' 탭에서는 일반 SQL을 MyBatis XML mapper로 변환합니다.
- 2쿼리 입력
변환할 MyBatis/iBatis 쿼리 또는 일반 SQL을 입력 영역에 붙여넣습니다. #{param} 형식은 MyBatis 3, #param# 형식은 iBatis 2로 자동 감지됩니다.
- 3파라미터 설정 (MyBatis → SQL)
감지된 파라미터의 타입(문자열/숫자)과 값을 설정합니다. 값을 입력하면 동적 태그 조건이 자동으로 평가되고, 값이 없는 파라미터의 조건 블록은 자동으로 제거됩니다.
- 4결과 확인 및 복사
변환된 SQL 또는 MyBatis XML을 확인하고 복사 버튼으로 클립보드에 복사합니다.
활용 팁
- 💡MyBatis 3 동적 태그: <if test="x != null">, <where>, <set>, <choose>/<when>/<otherwise>, <trim>, <foreach>를 지원합니다.
- 💡iBatis 2 동적 태그: <isNotEmpty>, <isEmpty>, <isNotNull>, <isNull>, <isEqual>, <isGreaterThan> 등과 <dynamic prepend="WHERE">를 지원합니다.
- 💡파라미터 값을 입력하면 해당 파라미터를 사용하는 조건 블록만 포함되고, 값이 없는 블록은 자동 제거됩니다. <![CDATA[...]]>도 자동으로 제거됩니다.
- 💡#{param}은 PreparedStatement 바인딩으로 값이 따옴표로 감싸지고, ${param}은 문자열 치환으로 그대로 삽입됩니다.
- 💡모든 처리는 브라우저에서 이루어지므로 민감한 쿼리도 안전하게 변환할 수 있습니다.
자주 묻는 질문
- Q. MyBatis 파라미터 변환이 필요한 이유는 무엇인가요?
- A. MyBatis 로그에는 #{param} 자리에 ?로 표시된 SQL과 파라미터 값이 분리되어 출력됩니다. 이 도구는 ?를 실제 값으로 치환하여 바로 실행 가능한 SQL을 생성합니다.
- Q. 어떤 타입의 파라미터를 지원하나요?
- A. 문자열, 숫자, Boolean, null, Date 타입을 지원합니다. 문자열은 자동으로 따옴표를 추가하고, null은 NULL 키워드로 변환합니다.
- Q. Prepared Statement를 사용하는 이유는 무엇인가요?
- A. SQL 인젝션 공격을 방지하고 쿼리 실행 계획을 캐싱하여 성능을 향상시킵니다. MyBatis의 #{} 문법이 Prepared Statement를 사용합니다.