이 페이지의 스니펫

MyBatis 매퍼 XML은 SI 백엔드의 일상입니다 — 그런데 <foreach>의 속성 이름이나 <choose> 구조는 쓸 때마다 헷갈립니다. 이 페이지는 매퍼 XML 동적 SQL 9종과 HTML 문서 뼈대 4종을 모았습니다. 태그 안 SQL 본문까지 색칠되는 전용 하이라이트로 구조가 눈에 들어옵니다.

스니펫은 빈칸 채우기 폼으로 제공됩니다 — 변수명·값처럼 바뀌는 부분이 입력칸으로 표시되고, 채우면 코드에 실시간 반영돼 완성본을 복사합니다. 채운 값은 브라우저 안에서만 쓰이고 외부로 전송되지 않습니다.

갈래별 구성

갈래담긴 것
MyBatis 동적 SQLif·choose(when/otherwise)·where·set — 조건부 쿼리 조립
MyBatis 반복foreach — IN절 바인딩·다건 INSERT
MyBatis 매핑resultMap — 컬럼↔필드 매핑·연관 매핑
HTML 문서기본 문서 뼈대·폼·표 — 관리 화면 마크업 시작점

foreach — 가장 많이 검색되는 태그


  #{id}

collection에 무엇을 넣는지(파라미터 이름·list·array), separator와 open/close의 역할 — 이 카드 하나가 IN절 바인딩의 검색을 끝냅니다. 다건 INSERT용 변형도 별도 카드로 있습니다.

활용 예 — 이런 순간에

카드 활용 팁

사용 순서

바인딩과 치환 — 한 글자 차이의 무게

표기동작쓰는 곳
#{value}바인딩 파라미터 — 값이 이스케이프됨값 전달의 기본 — 인젝션 안전
${value}문자열 치환 — 그대로 꽂힘컬럼명·정렬 방향 등 구조 요소 한정, 화이트리스트 검증 필수

사용자 입력을 치환 표기로 꽂으면 SQL 인젝션 통로가 됩니다 — 카드들은 값에 바인딩 표기를 쓰는 형태를 기본으로 제공하고, 치환이 불가피한 자리(동적 컬럼명)는 주의점에서 검증 조건을 함께 안내합니다.

매퍼 XML을 읽는 순서

남이 짠 매퍼를 볼 때는 SQL 골격을 먼저, 동적 태그를 나중에 읽는 것이 빠릅니다 — if·choose를 머릿속에서 걷어내고 "기본 쿼리가 무엇인가"를 잡은 뒤, 각 조건이 언제 붙는지를 얹는 순서입니다. 카드의 태그 구조가 눈에 익으면 이 독해 속도가 크게 오릅니다. 반대로 쓸 때는 정적 쿼리를 먼저 완성해 DB 툴에서 검증하고, 그 다음 동적 태그로 감싸는 순서가 디버깅을 줄입니다.

resultMap은 "컬럼명과 필드명이 다를 때만 쓰는 것"이 아니라, 매핑을 명시해 스키마 변경의 영향 범위를 드러내는 문서이기도 합니다 — 자동 매핑에 기대다 컬럼명 변경에서 조용히 null이 되는 사고를 명시 매핑이 막아줍니다.

테스트와 짝짓기

동적 SQL은 분기 조합만큼 결과 쿼리가 존재합니다 — 조건이 셋이면 조합은 여덟입니다. 매퍼를 고칠 때 대표 조합 두셋을 로그로 확인하는 습관(잘 조립된 SQL은 자매 앱 DosqlKit의 바인더로 재현)이, 특정 조합에서만 터지는 문법 오류를 배포 전에 잡아줍니다.

자주 묻는 질문

채운 값이 전송되나요?
아니요. 브라우저 안에서만 처리됩니다.
MyBatis 버전 기준은요?
널리 쓰이는 안정 문법 중심입니다 — 버전 특이 문법은 주의점에 표기합니다.
SQL 본문 스니펫은 어디 있나요?
순수 SQL 패턴(윈도우 함수·CTE 등)은 DB 토글이 담당합니다 — 이 페이지는 XML 태그 구조가 중심입니다.
HTML 스니펫은 프레임워크 무관인가요?
순수 HTML 뼈대입니다 — 어느 템플릿 엔진에도 출발점으로 쓸 수 있습니다.
전량 목록은 어디서 보나요?
레퍼런스 페이지(/ref/markup)에 전체가 있습니다.
include·sql 조각 재사용 태그도 있나요?
자주 쓰는 동적 SQL 중심으로 시작했습니다 — 조각 재사용은 프로젝트 구조 의존이 커 카드보다 팀 컨벤션 문서가 맞습니다.

함께 보는 페이지

전량 덤프는 HTML·XML 레퍼런스에서. 매퍼가 감싸는 SQL 자체는 DB 스니펫, 매퍼 로그의 실행 SQL 재조립은 자매 앱 DosqlKit의 로그 바인더가 전문입니다. 긴 매퍼 XML을 읽을 때는 DoffKit의 XML 문서 뷰가 편합니다.

DoniKit(도니킷) — 자주 쓰는 코드를 채워서 바로 복사

DoniKit(도니킷)은 개발자가 자주 쓰는 코드 조각을 빈칸만 채워 바로 복사하는 스니펫 라이브러리입니다. 반복문·컬렉션·Stream·문자열·형변환·날짜·예외 처리부터 DB·HTTP·테스트·파일까지, Java·JavaScript·SQL·HTML 168종을 15개 카테고리로 정리했습니다. 외우기 애매한 정형 코드를 매번 검색하는 대신, 필요한 값만 채워 완성된 코드를 얻습니다.

언어 토글로 Java·JavaScript·SQL을 오가고, 실무 작업 영역인 .http 요청·Shell(PowerShell·cmd·Linux 서버·WSL) 명령·HTML·XML(MyBatis 매퍼 포함)도 전용 색칠로 제공합니다. 채우기·색칠은 모두 접속한 브라우저 안에서 처리되어 입력한 값이 외부 서버로 전송되지 않습니다. 아래에서 카테고리와 자주 묻는 질문을 정리했습니다.

주요 기능

사용법

빈칸 채우기 → 복사

원하는 스니펫을 고르면 변수명·타입·값처럼 바뀌는 부분이 입력칸으로 표시됩니다. 값을 채우면 코드에 실시간으로 반영되고, 복사 버튼으로 완성된 코드를 그대로 가져갑니다.

언어·작업 영역 토글

Java·JavaScript·SQL 토글로 같은 개념의 코드를 언어별로 오갑니다. .http·Shell·HTML·XML은 언어가 아닌 작업 영역 토글로, IntelliJ/VS Code의 .http 요청, PowerShell·cmd·Linux 서버 실무 명령, MyBatis 매퍼 XML과 HTML 문서를 각각 전용 색칠로 보여줍니다. Shell은 개발 PC(Windows)·배포 서버(Linux)·WSL(둘을 잇는 명령)을 한 토글에서 오갈 수 있도록 기준 환경 라벨로 구분했습니다. 파일을 이름·수정일·크기로 찾고 폴더 구조·용량을 확인하는 조회 명령을 Windows·Linux 양쪽에 갖췄습니다. PowerShell을 처음 쓴다면 "기초·문법" 카테고리에서 동사-명사 이름 규칙, ls·cat 같은 별칭이 유닉스 옵션(-al)까지 받아주지는 않는다는 점, 파이프라인으로 거르고 정렬하는 법, .ps1 실행이 막힐 때 푸는 순서를 먼저 확인할 수 있습니다.

실무 카테고리

SQL은 PostgreSQL 함수·프로시저·익명 블록(DO $ … END $)·윈도우 함수·재귀 CTE·DDL을, Java는 BigDecimal·MultipartFile·페이징·@Scheduled를, 테스트는 JUnit 4↔5·Mockito·MockMvc·Vitest를 담았습니다. 폐쇄망 레거시를 고려해 HTTP 클라이언트는 최신·구세대 API를 함께 제공합니다.

자주 묻는 질문

DoniKit은 무료인가요?

네, 모든 스니펫을 무료로 쓸 수 있습니다. 운영 비용은 페이지에 표시되는 광고로 충당합니다.

회원가입이나 설치가 필요한가요?

아니요. 브라우저로 페이지를 열면 바로 쓸 수 있고, 로그인이나 프로그램 설치가 필요 없습니다.

채운 값이 서버로 전송되나요?

아니요. 빈칸 채우기와 구문 색칠은 접속한 기기의 브라우저 안에서 처리되며, 입력한 값은 외부 서버로 전송되지 않습니다.

복사한 코드를 상업 프로젝트에 써도 되나요?

스니펫은 흔히 쓰이는 정형 코드 패턴으로, 자유롭게 참고·사용할 수 있도록 제공합니다. 다만 프로젝트에 넣을 때는 실제 요구사항과 라이선스에 맞게 검토·수정해 사용하세요.

어떤 정보가 저장되나요?

테마·언어 토글 같은 화면 설정과 즐겨찾기·최근 사용한 스니펫 목록(스니펫 이름표만)이 브라우저 localStorage에 저장됩니다. 채운 값 자체는 저장하지 않습니다.

광고와 쿠키는 어떻게 처리되나요?

Google 애드센스 광고가 표시될 수 있으며 광고 목적의 제3자 쿠키가 사용될 수 있습니다. 자세한 내용은 페이지 하단 "개인정보 안내"에서 확인할 수 있습니다.

스니펫 레퍼런스