본문으로 건너뛰기

MBMyBatis 변환기

로딩 중...

MyBatis는 Java 진영에서 가장 널리 사용되는 SQL 매퍼 프레임워크입니다. MyBatis 쿼리에는 #{param}이나 ${param} 같은 파라미터 바인딩과 <if>, <where>, <choose> 같은 동적 태그가 포함되어 있어, 디버깅 시 실제 SQL로 변환하기 어렵습니다. 이 도구는 동적 태그를 파라미터 값에 따라 평가하여 실행 가능한 SQL로 변환하거나, 반대로 일반 SQL을 MyBatis XML mapper 템플릿으로 생성해주는 양방향 변환기입니다.

사용 방법

  1. 1
    탭 선택

    'MyBatis → SQL' 탭에서는 MyBatis/iBatis 쿼리의 동적 태그를 처리하고 파라미터를 실제 값으로 치환합니다. 'SQL → MyBatis XML' 탭에서는 일반 SQL을 MyBatis XML mapper로 변환합니다.

  2. 2
    쿼리 입력

    변환할 MyBatis/iBatis 쿼리 또는 일반 SQL을 입력 영역에 붙여넣습니다. #{param} 형식은 MyBatis 3, #param# 형식은 iBatis 2로 자동 감지됩니다.

  3. 3
    파라미터 설정 (MyBatis → SQL)

    감지된 파라미터의 타입(문자열/숫자)과 값을 설정합니다. 값을 입력하면 동적 태그 조건이 자동으로 평가되고, 값이 없는 파라미터의 조건 블록은 자동으로 제거됩니다.

  4. 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를 사용합니다.

DevHelper

© 2026. All rights reserved.