← DosqlKit 웹 앱으로

MyBatis 로그 바인더 — 로그 두 줄로 실행 SQL 복원

MyBatis는 실행한 SQL을 물음표(?)가 든 Preparing: 줄과 값 목록인 Parameters: 줄로 나눠 찍습니다. 값이 어디에 들어갔는지 눈으로 짜맞추는 대신, 두 줄을 붙여넣으면 물음표 자리에 값을 순서대로 끼운 실행 가능한 SQL을 만들어 줍니다.

Preparing: SELECT * FROM users WHERE dept = ? AND age > ? AND deleted_at IS NULL
Parameters: 개발팀(String), 30(Integer)

→ 재조립 결과

SELECT * FROM users WHERE dept = '개발팀' AND age > 30 AND deleted_at IS NULL

타입 → SQL 리터럴 규칙

로그의 타입 표기변환
null (타입 없음)NULL
Integer·Long·Double·BigDecimal 등 숫자 계열따옴표 없이 그대로 (숫자 모양이 아니면 경고)
String·Timestamp·Date 등 나머지 전부'…'로 감싸고 값 속 '''로 이스케이프
타입 표기가 없는 값문자열 취급 + 경고

알아두면 좋은 동작

값 안에 쉼표가 든 경우(서울, 강남(String))도 "조각이 (타입)으로 끝나야 한 값"이라는 규칙으로 올바르게 재병합합니다. 문자열·주석 안의 물음표는 치환하지 않습니다. 날짜 방언을 Oracle로 고르면 Timestamp·Date 계열 값을 TO_DATE/TO_TIMESTAMP로 감싸 그대로 실행할 수 있게 합니다.

재조립된 SQL은 "정리해 보기"를 켜면 들여쓰기·키워드 정렬까지 다듬어 줍니다. 파싱이 애매한 입력은 조용히 틀리는 대신 경고로 알립니다.