🎅 오너먼트 프로젝트

BeanPropertyRowMapper로 자동 매칭

보배 진 2026. 2. 7. 15:49

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 같은 계산 컬럼
  • 가독성 챙기고 싶을 때