홈 › 실무 확장 › 05 / 22

MyBatis 어노테이션 매퍼로 쿼리 연동

섹션 7진행 0 / 22

7. 정리

  • MyBatis 어노테이션 매퍼는 인터페이스 + @Select/@Insert/@Update/@Delete 만 쓰면 프록시가 JDBC 의 prepare·바인딩·매핑·자원 해제를 대신한다. Configuration 6줄이 mybatis-config.xml 을 대체한다.
  • #{} 는 바인딩, ${} 는 치환. 값은 반드시 #{}. ${} 는 컬럼명·정렬 방향에만, 화이트리스트 검증 후.
  • 파라미터가 2개 이상이면 @Param. 조건이 많으면 record 조건 객체 하나로.
  • 결과 매핑은 자동(camelCase) + @Results(컬럼명 다른 것만) + @ConstructorArgs(record). @ResultMap("id") 로 재사용. *_yn 같은 레거시 컬럼은 TypeHandler.
  • 세션 하나 = 커넥션 하나 = 트랜잭션 하나. try-with-resources 로 열고 성공 끝에 commit(), 예외는 전파해 close() 가 롤백. 세션을 필드에 두지 않는다.
  • 동적 SQL 은 <script>(짧은 조건)와 Provider(정렬·페이징·검증 로직). Provider 도 값은 #{} 로 남겨 바인딩한다.
  • 대량 insert 는 ExecutorType.BATCH + 주기적 flushStatements(). 대량 조회는 ResultHandler/Cursor. 목록의 연관 객체는 @One 대신 JOIN + 점 표기 매핑(N+1 방지).
  • Spring 은 이 위에 SqlSessionTemplate 과 @Transactional 을 얹어 세션 관리를 숨긴다. 코어를 알면 Spring 설정 한 줄 한 줄이 무엇을 대신하는지 보인다.

Excel 순수 JDK(01) → POI(02) → 업로드 서버(03) → JDBC(04) → MyBatis(05) 를 이으면 "브라우저에서 엑셀을 올려 검증하고 DB 에 트랜잭션으로 저장한 뒤 결과를 엑셀로 내려주는" 관리자 기능 하나가 외부 프레임워크 없이 완성됩니다.

다음 레슨 06. MyBatis XML 매퍼 는 실무 프로젝트가 실제로 쓰는 형태, 즉 XML 매퍼 파일 + Oracle 문법 + PageHelper 페이징 + Spring Boot 연동을 다룹니다.