반응형
@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
'개발 > 스프링' 카테고리의 다른 글
[Trouble-shooting] 중첩 클래스명 중복으로 Swagger가 고장났다 (2) | 2025.03.21 |
---|---|
Faker가 만들어 주는 테스트 데이터, 또 나만 몰랐지 (3) | 2025.03.19 |
Swagger씨, API 문서 작성해주세요 ! (2) | 2025.03.06 |
P6Spy를 도입하여 쿼리 로깅을 개선해보자 (2) | 2025.03.06 |
QueryDSL을 사용해보자 (3) | 2025.02.15 |