개발/스프링

[Trouble-shooting] MyBatis는 카멜케이스 설정을 직접 해야 한다

brobro332 2025. 3. 18. 23:52
반응형
@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
)
  • 혹시 자바/코틀린 응답 DTO에 필드명을 스네이크케이스로 작성한다면 이 글을 굳이 볼 필요가 없다.
  • 자바/코틀린의 변수명이나 필드명은 카멜케이스로 작성하는 것이 글로벌 컨벤션이므로 마이바티스 카멜케이스 설정을 따로 하지 않으면 일반적으로는 문제가 생길 것이다.

 

카멜케이스 설정을 따로 안 하면 이 꼴 납니다

  • 코드도 쿼리도 분명 제대로 작성되어 있는데 서버단에서 쿼리를 통해 매핑된 응답 DTO를 로깅해 보니 다음과 같았다.
[
	NoticeResponseDto(
        writerEmail='제목'
        , writerName='내용'
        , title='제목'
        , content=내용
        , createdDate='2025-03-18'
        , updatedDate='김진형'
	)
]
  • 본인은 마이바티스 설정을 따로 해본 적 없이 그저 개발만 해서 카멜케이스 설정을 따로 해야 하는지 몰랐는데, 해야 된단다.
  • application.properties에 다음 라인만 추가하면 끝이다.
mybatis.configuration.map-underscore-to-camel-case=true

 

  • 설정 하나 바꾸니 제대로 매핑이 된다.

 

마치며

뭐든 무작정 해보는 스타일이라 디버깅으로 검출할 수 있는 오류가 아니면 원인을 찾는게 정말 오래 걸린다.
그렇다고 무언갈 도입할 때 문서나 책부터 보는 건 아무리 생각해도 못할 것 같다.. 🤔

 

이미지 출처

 

위키원

위키원

wiki1.kr