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
| 로그의 타입 표기 | 변환 |
|---|---|
| null (타입 없음) | NULL |
| Integer·Long·Double·BigDecimal 등 숫자 계열 | 따옴표 없이 그대로 (숫자 모양이 아니면 경고) |
| String·Timestamp·Date 등 나머지 전부 | '…'로 감싸고 값 속 '는 ''로 이스케이프 |
| 타입 표기가 없는 값 | 문자열 취급 + 경고 |
값 안에 쉼표가 든 경우(서울, 강남(String))도 "조각이 (타입)으로 끝나야 한 값"이라는 규칙으로 올바르게 재병합합니다. 문자열·주석 안의 물음표는 치환하지 않습니다. 날짜 방언을 Oracle로 고르면 Timestamp·Date 계열 값을 TO_DATE/TO_TIMESTAMP로 감싸 그대로 실행할 수 있게 합니다.
재조립된 SQL은 "정리해 보기"를 켜면 들여쓰기·키워드 정렬까지 다듬어 줍니다. 파싱이 애매한 입력은 조용히 틀리는 대신 경고로 알립니다.