8485horm
10
2021-10-21 02:05:01
2
152

DB select 값을 받아왔는데 [B@... 라는 값을 리턴합니다.


안녕하세요


스프링 / mybatis / mariadb 사용중입니다.


DB 툴에서 DB 에 값을 insert 했습니다.

insert 한 값을 DB 툴에서는 한글, 숫자, 영어 모두 정상값으로 SELECT 되는데

이걸 java 코드상에서 불러오면 [B@... 라는 값을 리턴합니다.


프로젝트의 문제인건가 해서 UTF-8 설정을 완료하였고, DB 캐릭터셋도 UTF-8 인것으로 확인했습니다.

신기한것은 java 코드상에서 불러오면(예를들어 Map<String, Object> = testService.selectTestList) [B@... 라는 값을 리턴하지만 저 값을 VO로 담은다음 확인하면 정상적인 데이터가 들어가있습니다.


하지만 모든 SELECT 쿼리를 VO로 매핑시킬순 없다고 생각해 근본적인 원인을 찾아야 할 것 같은데 도저히 어떤 이유로 이런 값이 리턴되는지 모르겠습니다.


운영서버 캐릭터셋과 똑같은 설정으로 로컬에서 INSERT, SELECT 하면 잘됩니다.

cafe24 mariadb 사용중이라 캐릭터셋을 변경하며 확인할수도 없습니다.


okky에서 검색해보니 비슷한 이유로 질문글을 많이 올리셨는데 vo로 받는것 말고 해결 하신 방법이 따로 보이지 않는것 같아 질문드립니다.


감사합니다.

0
  • 답변 2

  • allinux
    1k
    2021-10-21 09:06:14

    mybatis 를 사용하는 이상 object 로 매핑해서 사용하겠다는 겁니다.

    mybatis 의 사용이유를 고민해보시기 바랍니다.

  • 8485horm
    10
    2021-10-21 22:16:05 작성 2021-10-21 22:16:47 수정됨

    자답)


    pom.xml 에서   mariadb dependency


    <!-- mariaDB -->

    <dependency>

    <groupId>org.mariadb.jdbc</groupId>

    <artifactId>mariadb-java-client</artifactId>

    <version>2.3.0</version>

    </dependency>


    위처럼 설정했을때 로컬이 아닌 외부호스팅 DB 에서 오류가 났습니다.


    <dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.17</version>

    </dependency>


    mysql 로 변경 한 뒤는 정상적으로 데이터 노출됩니다.


    다른 좋은 방법이 있을지는 모르지만 우선 전 이 방법으로 해결했습니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.