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.