Trouble Shootings/Web(4)
-
[MySQL] SpringBoot에서 Point, Polygon 데이터를 자바 객체에 담기 (with MyBatis)
상황 설명🛠️환경- SpringBoot 3.4.2- MySQL 8.0.41- MyBatis 3.0.4- Liberica JDK 17 LTS 모바일 프로젝트를 진행하던 중, 좌표 데이터를 저장할 일이 생겼습니다. 지도에서 원하는 위치에 사각형을 그리고, 사용자가 폰을 들고 해당 영역에 들어가면 이벤트가 발생할 수 있도록 만들기 위함이었죠. (+지도에서 시각적으로 표시) 저는 RDBMS 기술 스택으로 `MySQL`을 선택한 상황이었고, `MySQL`에는 이러한 공간 데이터를 저장하는 데이터 타입(ex. Point, Polygon)을 지원하는 걸로 알고 있었습니다. 요구사항에 공간에 대한 복잡한 연산이 필요 없어서 그냥 테이블 컬럼으로 각각 위도 경도 좌표를 저장할까도 생각했지만, 중앙점 좌표까지 총 10..
2025.02.16 -
[SpringBoot] @RestControllerAdvice와 Swagger 충돌
❌사건의 발단⚙️환경- SpringBoot 4.3.2- Swagger: org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2 개발을 하다가 API마다 예외 처리 코드를 작성하는 게 너무 귀찮고 시간이 많이 들기도 해서 어떻게 방법이 없나 고민하던 찰나에, `@RestControllerAdvice` 어노테이션을 스프링부트에서 제공한단 사실을 알게 되었습니다. 예외처리 핸들러 클래스를 지정하여 해당 어노테이션을 붙이면, 지정한 패키지 경로에 있는 클래스들에서 던진 예외를 받아서 처리할 수 있더라구요. 이렇게 전역적인 핸들러 클래스를 지정하니, `Controller`에서 `try-catch`를 쓸 필요가 없었습니다. 😊 근데 문제는 `@RestController..
2025.02.10 -
[MySQL] Error: Data too long for column "컬럼명"
데이터베이스 테이블 컬럼에 걸어놓은 데이터 타입에 비해, 입력 데이터가 더 많은 저장 공간을 차지해 잘리는 현상입니다.### SQL: INSERT INTO users (code_id, name, nickname, email) VALUES (?, ?, ?, ?)### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'nickname' at row 1;Data truncation: Data too long for column 'nickname' at row 1] with root cause 닉네임을 받기 위해 `varchar(13)` 정도로 데이터 타입 및 크기를 명시해놨는데, 한..
2025.02.08 -
[MyBatis] parameterType에 중첩 클래스 타입을 넣을 경우
Mapper XML에서 Insert SQL 구문을 작성했는데 다음과 같은 에러 메시지가 SpringBoot 로그에서 떴습니다.Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'domain.controller.auth.AuthRequest.RegistrationUserData'. Cause: java.lang.ClassNotFoundException: Cannot find class: domain.controller.auth.AuthRequest.RegistrationUserData 이..
2025.02.08