[Spring] MyBatis unread

myminimin·2023년 8월 23일
0

Spring/Springboot

목록 보기
4/21

MyBatis Mapper를 이용해서 DB에 있는 값을 가지고 오는 실습을 진행 도중에 bno나 date 정보는 제대로 가지고 오는데 title, content, writer의 값이 unread인 오류가 발생했다. (캡처를 따로 안해둠)

|bno |title |content |writer |regdate |updatedate |
|5 |unread |unread |unread |2023-08-23 11:38:19.0 |2023-08-23 11:38:19.0 |
|6 |unread |unread |unread |2023-08-23 11:38:21.0 |2023-08-23 11:38:21.0 |
|7 |unread |unread |unread |2023-08-23 11:38:36.0 |2023-08-23 11:38:36.0 |
|8 |unread |unread |unread |2023-08-23 11:38:44.0 |2023-08-23 11:38:44.0 |


검색을 해보니 가장 흔한 오류가
1. VO&DTO와 DB의 field가 일치하지 않아서 발생하거나
2. VO에서 getter/setter가 자동 생성이 되지 않았거나
3. 등등의 이유로 resultMap을 사용해 클래스 변수와 DB의 컬럼을 맞춰준다...

던데 나 같은 경우에는 또 😥 해당되지 않았다...

결론은 교재에서는 varchar2를 사용했는데 내가 nvarchar2로 지정해서 필드를 생성했기 때문에 문제가 발생했던 것이다...

Spring과 MyBatis를 사용하여 데이터를 읽을 때 'nvarchar2'는 컬럼에 저장 된 데이터에 유니코드 문자열을 포함할 수 있기 때문에 이 데이터를 읽어들일 때 문자 인코딩 및 디코딩 과정이 필요해서 데이터베이스 연결, 애플리케이션 설정, Spring/MyBatis 설정 등에서 문자 인코딩 관련 설정이 잘 되어있어야 하는데 그런 거 없이 그냥 NVARCHAR2를 이용해서 발생한 오류였다! 😂 ( +혹은 데이터베이스 드라이버가 nvarchar2 데이터를 지원하는 버전인 가를 확인해야 한다고 한다.)

반면에 'varchar2'는 비유니코드 문자열을 저장하므로 문자 인코딩 및 디코딩과 관련된 문제가 발생하지 않아서 값을 잘 가지고 올 수 있었던 것...


국비수업 중에서 한글을 이용하려면 nvarchar2를 이용하라고 했죠~ 이런 식으로만 얘기를 해줬기 때문에 어? 교재에는 varchar네? 나는 title/content/writer에 한글도 쓸거니까 nvarchar2 를 써야지! 하면서 아무 생각없이 사용을 했었다 😑... + varchar2와 nvarchar2의 차이

오늘 오류를 통해서 또 배워간다!!!

0개의 댓글