공공부하자개발 · 영어 학습 노트
자바
실무 확장Excel · 파일 업로드 · DB 연동0/22 완료
  • 01Excel(XLSX) 구조와 순수 JDK로 읽기/쓰기
  • 02Apache POI로 Excel 업로드/다운로드
  • 03파일 업로드/다운로드 서버 (HttpServer)
  • 04JDBC 기초와 트랜잭션 (H2)
  • 05MyBatis 어노테이션 매퍼로 쿼리 연동
  • 06MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring Boot
  • 07REST API 서버와 JSON
  • 08Vue 3 SPA 와 Java 서버 연동
  • 09@Scheduled 운영
  • 10로깅 실무: 레벨·계층, MDC 추적, 예외·성능, 마스킹, 롤링, JSON 로그
  • 11외부 API 연동
  • 12테스트 실무
  • 13암호화·개인정보 보호
  • 14인코딩·한글 실무
  • 15@Transactional 심화
  • 16긴 작업 비동기 처리와 진행률
  • 17SFTP·FTP 파일 연계
  • 18로컬 캐시와 @Cacheable
  • 19메일·알림 발송
  • 20웹 보안 체크리스트
  • 21빌드 도구와 폐쇄망 의존성 반입
  • 22성능 측정: p50·p95·p99, 측정 계층, JFR, JMH 함정, 자체 부하 테스트, 병목 순위
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 실무 확장 › 06 / 22

MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring Boot

섹션 7진행 0 / 22
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

7. 정리

  • 실무 MyBatis 는 XML 매퍼다. mybatis-config.xml(전역, 요소 순서 고정) + mapper/*.xml(namespace = 인터페이스, id = 메서드). id 오타는 실행 시점 오류이므로 기동 시 hasStatement 검사를 둔다.
  • <resultMap> 이 결과 매핑의 전부. <id> 가 접기 기준, <constructor> 는 record, <collection>/<association> 은 1:N/N:1. 중첩 매핑이 있으면 autoMapping="true" 를 잊지 않는다. JOIN 은 columnPrefix 로 컬럼 충돌을 피한다.
  • 동적 SQL: <where>/<set>/<trim> 이 접속사·쉼표를 정리하고, <if>/<choose>/<foreach>/<bind> 가 조건을 만든다. 목록과 COUNT 는 <sql>/<include> 로 같은 WHERE 조각을 쓴다. 정렬 컬럼은 <choose> 화이트리스트.
  • XML 안의 < 는 &lt; 또는 CDATA. CDATA 안에서는 동적 태그가 죽는다.
  • Oracle 방언: 시퀀스 + <selectKey order="BEFORE">, ROWNUM 3중 서브쿼리 또는 OFFSET/FETCH, NVL/TO_CHAR/DUAL, MERGE USING, 그리고 jdbcTypeForNull=NULL. DB 별 분기는 databaseId(소수 차이) 또는 방언 폴더 + mapper-locations(넓은 차이).
  • PageHelper = ThreadLocal 지시 + Executor.query 인터셉터가 COUNT 와 페이징 SQL 을 만들어 끼움. 지시는 다음 한 번의 실행된 SQL 에만 소비되므로 finally { clearPage() }. StatementHandler 레벨 구현은 1차 캐시와 충돌한다.
  • Spring Boot 는 spring.datasource + mybatis.* + @MapperScan + @Transactional 로 세션·트랜잭션·설정을 대신한다. 코어에서 손으로 한 일과 1:1 로 대응된다.
  • H2 MODE=Oracle 로 폐쇄망에서 Oracle 문법 XML 을 80% 검증할 수 있다. databaseId 는 여전히 h2 이고, 바인드 변수만 있는 인라인 뷰는 CAST 가 필요하다.

이것으로 실무 확장 레벨을 마칩니다.

Excel 순수 JDK(01) → POI(02) → 업로드 서버(03) → JDBC(04) → MyBatis 어노테이션(05) → MyBatis XML(06) 을 이으면, 브라우저에서 엑셀을 올려 검증하고 Oracle 에 트랜잭션으로 저장한 뒤 페이징된 목록과 엑셀 다운로드를 제공하는 관리자 기능이 실무 프로젝트와 같은 형태로 완성됩니다.

명령어 레벨은 이 과정에서 자주 찾게 되는 API 를 모아 둔 참조입니다.

정리
    이전 섹션6 연습 문제7 / 7다음 레슨07 REST API 서버와 JSON
    참고 영상 · 인터넷 연결 시 유튜브 검색이 열립니다자바 MyBatis XML 매퍼 · Oracle 방언 · PageHelper · Spring BootMyBatis XML 매퍼 resultMap