Spring

IT/Spring | Java

[Spring] @RequestBody DTO에 null이 들어갈 때

문제상황 { "seq": "01", "postDate": "20230524", "mCodeName": "어쩌고" } 위와 같은 데이터(예시)를 @RequestBody로 요청을 받았는데 DTO에 자꾸 null 값이 들어오는 것을 확인했다. 아래는 DTO @Data @AllArgsConstructor @NoArgsConstructor public class TistoryDTO { String seq; String postDate; String mCodeName; } 문제가 되는 파라미터는 mCodeName이다. 이 데이터가 자꾸 null로 들어와서 날 화나게 만듦;; null 안 보냈다고 ㅡㅡ 반대로 쿼리에서 M_CODE_NAME이라는 컬럼을 select 해 왔을 때도 제대로 맵핑이 안됐다. 카멜 케이스 지..

IT/Spring | Java

[Spring] MyBatis CamelCase 적용 (+대소문자 오류)

대부분의 DB 컬럼들은 SnakeCase(스네이크 케이스)를 사용한다. LAST_NAME와 같이 언더바(_)를 붙여서 사용하는 것을 스네이크 케이스이다. 하지만 보통 변수명을 지을 때 CamelCase(카멜 케이스)를 사용하기 때문에 MyBatis 쿼리 조회 후 스네이크케이스를 카멜케이스로 자동 변환하는 것이 편리할 것이다. 즉 LAST_NAME -> lastName으로 바꿔주는 과정이 필요하다. 1. 예시 예를 들어, 다음과 같은 카멜케이스로 작성된 DTO 클래스가 있다고 하자. @Getter @NoArgsConstructor @AllArgsConstructor @Build public class UserDTO { private String userId; private String userNm; pri..

IT/Spring | Java

[Spring] 객체와 String 문자열 null 체크 (==, isEmpty, hasText)

1. String 타입 null 체크 문자열 데이터의 유효성을 체크하기 위해 다음과 같은 방법을 사용할 수 있다. 여기서 유효성은 데이터가 빈 문자열 또는 null 인지 확인한다. equals() 와 == 연산자 if("".equals(map.get("stringData")) || map.get("stringData") == null) { ... } "".equals(비교데이터)를 통해 해당 값이 빈 값인가, 비교데이터 == null을 통해 해당 값이 null인가를 판단할 수 있다. 이 때, (비교데이터).equals("") 방식은 exception이 발생할 수 있기 때문에 불가하다. 더보기 여기서 자세히 설명하면, equals()는 실제 값을 비교하고 == 연산자는 두 개의 주소값을 비교한다. Stri..

IT/Spring | Java

[Spring] 롬복(Lombok) 어노테이션 @Builder

우선 빌더패턴(builder pattern)을 이해해야 한다. 빌더 패턴이란? 객체를 생성하고 필드 값을 설정하기 위해 사용되는 디자인 패턴이다. 보통 인자를 많이 가지는 생성자에서 사용하면 가독성이 좋고 유연한 객체 생성이 가능하다. 생성자를 사용하여 객체를 생성할 때는 순서를 정확히 지켜줘야 한다. 하지만 만약 인자가 많다면 기억하기도 불편하고 수정하기도 힘듦;; 그리고 어느 자리(정보)에 들어가는지도 헷갈린다. 또한, 필수, 선택적 인자를 위한 각각의 생성자도 많이 필요로 한다. public class Account { private String name; private String nickName; private int age; private String address; } //어디에 어떤 타입과..

힞뚜루마뚜루
'Spring' 태그의 글 목록