Post

πŸ’₯ MyBatis camelCase 처리

πŸ’₯ MyBatis camelCase 처리

문제 상황

  • μ½”λ“œμ™€ Query λͺ¨λ‘ λΆ„λͺ… μ œλŒ€λ‘œ μž‘μ„±λ˜μ–΄ μžˆλŠ”λ° λ“±λ‘μžμ™€ μˆ˜μ •μΌμžμ— 잘λͺ»λœ 값이 λ§€ν•‘ λ˜μ—ˆλ‹€.
  • Query에 λŒ€ν•œ 응닡 DTOλ₯Ό Loggingν•΄ λ³΄λ‹ˆ λ‹€μŒκ³Ό κ°™μ•˜λ‹€.
1
2
3
4
5
6
7
8
9
10
[
	NoticeResponseDto(
		writerEmail='제λͺ©'
		, writerName='λ‚΄μš©'
		, title='제λͺ©'
		, content=λ‚΄μš©
		, createdDate='2025-03-18'
		, updatedDate='κΉ€μ§„ν˜•'
	)
]

문제 원인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Schema(description = "곡지사항 λͺ©λ‘ 쑰회 응닡 DTO")
class NoticeResponseDto (
	@Schema(description = "μž‘μ„±μž 이메일")
	val writerEmail: String,
	
	@Schema(description = "μž‘μ„±μž 이름")
	val writerName: String,
	
	@Schema(description = "제λͺ©")
	val title: String,
	
	@Schema(description = "λ‚΄μš©")
	val content: String,
	
	@Schema(description = "λ“±λ‘μΌμž")
	val createdDate: String,
	
	@Schema(description = "μˆ˜μ •μΌμž")
	val updatedDate: String
)
  • MyBatisλŠ” 기본적으둜 λ§€ν•‘ μ‹œ snake_case ↔ camelCase μžλ™ 맀핑을 μ§€μ›ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, μΌμΉ˜ν•˜μ§€ μ•Šμ„ 경우 resultMap을 λ”°λ‘œ μ§€μ •ν•΄μ•Ό ν•œλ‹€.

ν•΄κ²° 방법

βœ… μƒμ„±μž 기반 λ§€ν•‘

1
2
3
4
5
6
7
8
9
10
<resultMap id="NoticeResponseMap" type="com.example.dto.NoticeResponseDto">
    <constructor>
        <arg column="writer_email" javaType="String"/>
        <arg column="writer_name" javaType="String"/>
        <arg column="title" javaType="String"/>
        <arg column="content" javaType="String"/>
        <arg column="created_date" javaType="String"/>
        <arg column="updated_date" javaType="String"/>
    </constructor>
</resultMap>
  • μƒμ„±μž νŒŒλΌλ―Έν„° μˆœμ„œκ°€ <constructor>의 <arg> μˆœμ„œμ™€ λ°˜λ“œμ‹œ μΌμΉ˜ν•΄μ•Ό ν•œλ‹€.

βœ… application.properties μžλ™ λ§€ν•‘ μ„€μ •

1
mybatis.configuration.map-underscore-to-camel-case=true
  • MyBatisλŠ” μœ„μ™€ 같이 camelCase 섀정을 ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€κ³  ν•œλ‹€.
  • 이 방법은 λͺ¨λ“  ν•„λ“œμ— @Setterκ°€ μ„€μ •λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.

회고

  • ν•΄κ²° 방법은 κ°„λ‹¨ν•˜μ§€λ§Œ, μ»΄νŒŒμΌμ΄λ‚˜ μ˜ˆμ™Έκ°€ ν„°μ§€μ§€ μ•ŠλŠ” λ¬Έμ œκ°€ 였히렀 더 ν•΄κ²°ν•˜κΈ° μ–΄λ €μš΄ 것 κ°™λ‹€.
This post is licensed under CC BY 4.0 by the author.