DB Query Formatter (MyBatis)는 VS Code에서 MyBatis Mapper XML을 정리해 주는 포맷터 확장입니다.
XML 태그 계층과 Mapper 내부 SQL을 함께 포맷해서, 길게 한 줄로 작성된 쿼리나 들쭉날쭉한 들여쓰기를 읽기 쉬운 형태로 정리합니다.
지원 대상
다음 조건 중 하나를 만족하는 문서를 포맷합니다.
- MyBatis Mapper DOCTYPE이 포함된 XML
- 루트 태그가
mapper인 XML
일반 XML 문서는 이 확장의 포맷 대상이 아닙니다.
주요 기능
mapper구조에 맞춘 XML 들여쓰기 정리select,insert,update,delete,selectKey,sql내부 SQL 포맷SELECT,FROM,JOIN,ON,WHERE,START WITH,CONNECT BY,GROUP BY,HAVING,ORDER BY,SET,VALUES기준 줄바꿈- 긴 속성이 있는 태그를 여러 줄로 분리
FROM,VALUES, 조건식 내부에 있는 중첩 서브쿼리 정리<![CDATA[ <= ]]>같은 비교 연산 포함 쿼리 처리- MyBatis placeholder (
#{...},${...}) 유지 - SQL 키워드 대문자 정규화
- SQL 사이에 들어간 MyBatis 동적 태그(
if등) 유지
설치
VSIX로 설치
프로젝트 루트에서 패키징합니다.
vsce package
VS Code에서 Extensions: Install from VSIX...를 실행한 뒤 생성된 .vsix 파일을 선택하면 됩니다.
개발 모드로 실행
npm install
npm run compile
그다음 VS Code에서 F5를 눌러 Extension Development Host를 실행합니다.
사용 방법
- MyBatis Mapper XML 파일을 엽니다.
- 언어 모드가
XML인지 확인합니다. Format Document를 실행합니다.
기본 단축키:
- macOS:
Shift + Option + F - Windows / Linux:
Shift + Alt + F
여러 XML 포맷터를 함께 사용 중이라면 Format Document With...에서 이 확장을 기본 포맷터로 지정하면 됩니다.
포맷 기준
이 확장은 다음 상황에 초점을 맞춥니다.
- MyBatis Mapper에서 자주 사용하는 일반적인 SQL
- 조인과 조건절이 섞인 조회 쿼리
FROM,WHERE,START WITH,VALUES안에 들어가는 서브쿼리- Oracle 계층형 쿼리(
START WITH ... CONNECT BY) CDATA로 감싼 비교 연산자- SQL 중간에 들어가는 동적 태그
반대로 아래와 같은 경우에는 결과를 한 번 더 확인하는 편이 좋습니다.
- 벤더 전용 힌트 문법이 많은 쿼리
- 사람이 수동 정렬한 특수 레이아웃을 반드시 유지해야 하는 경우
- 매우 복잡한 동적 SQL 조합
개발
스크립트
npm run compile
npm run watch
npm run lint
npm test
테스트
포맷터 테스트는 src/test/extension.test.ts에 있습니다.
npm test는 vscode-test를 사용하므로 환경에 따라 VS Code 테스트 런타임이 필요할 수 있습니다.
버전 정보
현재 버전: 0.1.4
변경 내역은 CHANGELOG.md에서 확인할 수 있습니다.