English
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, GROUP BY, ORDER BY, SET, 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
- 조인과 조건절이 섞인 조회 쿼리
VALUES ((SELECT ...)) 형태의 서브쿼리
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.2
변경 내역은 CHANGELOG.md에서 확인할 수 있습니다.