◆ LAB · DB

카멜 ↔ 스네이크 함정

데이터와 MyBatis — 실습

📍 지금 어디를 만지고 있나요?
브라우저
데이터와 MyBatis
DB

사전 준비

이번 실습의 목표

DB 는 user_id (스네이크), 자바는 userId (카멜). 둘이 자동으로는 매핑 안 됨.

1
코드 작성
-- DB (일반 예시)
CREATE TABLE sample (
    user_id    VARCHAR(50),     -- 스네이크
    created_at TIMESTAMP
);

// 자바 VO
public class Sample {
    private String userId;        // 카멜
    private LocalDateTime createdAt;
}

-- 결과: SELECT 해도 userId, createdAt 이 null

// 해법 1: AS 로 매핑
SELECT user_id AS userId, created_at AS createdAt FROM sample

// 해법 2: 글로벌 설정 (권장)
<!-- mybatis-config.xml -->
<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
CHECKPOINT
  • 코드를 작성한 뒤 빨간 줄(컴파일 오류)이 없는가?
2
실행 + 결과 확인

Run on Server 또는 javac+java 로 실행하고 결과를 확인합니다.

CHECKPOINT
  • 예상한 동작이 일어났는가?
  • 안 됐다면 F12 / 콘솔 / 로그 어디서 단서가 보이는가?

실습 완료 체크리스트

DB 스네이크 vs 자바 카멜 불일치 = null
해법 1: SELECT ... AS ... (수동)
해법 2: mapUnderscoreToCamelCase=true (전역, 권장)