MyBatis 어노테이션 매퍼로 쿼리 연동
7. 정리
- MyBatis 어노테이션 매퍼는 인터페이스 +
@Select/@Insert/@Update/@Delete만 쓰면 프록시가 JDBC 의 prepare·바인딩·매핑·자원 해제를 대신한다.Configuration6줄이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 연동을 다룹니다.