BeanPropertyRowMapper는 내부적으로 이렇게 매핑한다
DB 컬럼명 → 소문자
_ 제거 + camelCase 변환
→ DTO 필드명과 비교
ex) ACCOUNT_PK ➡ accountPk, ACCOUNT_ID ➡ accountId
이렇게는 자동으로 잘 붙는다
문제는 컬럼명이 DTO 필드명과 아예 다를 때이다
< AS 별칭으로 매칭 맞추기 : SQL의 컬럼 별칭을 DTO 필드명(camelCase)과 정확히 맞춘다 >
컬럼명이 DTO와 다른 경우
private int accountPk;
private String accountName;
🔼 DTO
SELECT
ACCOUNT_PK AS accountPk,
ACCOUNT_NAME AS accountName
FROM ACCOUNT
WHERE ACCOUNT_PK = ?
🔼 SQL
조인 컬럼 겹칠 때
SELECT
A.ACCOUNT_PK AS accountPk,
A.ACCOUNT_NAME AS accountName,
O.ORDERS_PK AS ordersPk
FROM ACCOUNT A
JOIN ORDERS O ON A.ACCOUNT_PK = O.ACCOUNT_PK
별칭을 안쓰면 컬럼 충돌 / 덮어쓰기 터짐
계산 컬럼 / 가공 컬럼
private int reviewCount;
🔼 DTO
SELECT
COUNT(*) AS reviewCount
FROM REVIEW
WHERE ITEM_PK = ?
🔼 SQL
AS 안 써도 되는 경우 vs 써야 하는 경우
AS 없어도 OK : ACCOUNT_PK → accountPk ITEM_NAME → itemName
AS 필수 :
- DTO 필드명과 다를 때
- JOIN으로 컬럼 겹칠 때
- COUNT / SUM / AVG 같은 계산 컬럼
- 가독성 챙기고 싶을 때
'🎅 오너먼트 프로젝트' 카테고리의 다른 글
| 자바와 쿼리문이 합쳐져 있던 Repository 파일 MyBatis로 결합도 낮춰보기 (0) | 2026.02.11 |
|---|---|
| 람다식 BeanPropertyRowMapper로 코드 줄여보기 (0) | 2026.02.07 |
| 테이블 이관 작업 진행 (Oracle ➡️ Mysql) (0) | 2026.02.01 |
| 🛠️ Eclipse Database Connections 설정 (MySQL) (0) | 2026.01.30 |
| application.properties에 Spring Boot 설정하기 (0) | 2026.01.30 |