MyBatis + MariaDB(or MySQL) 사용 시 select 결과가 resultType으로 지정한 Class에 바인딩(맵핑)이 안된다.


<mapper namespace="_mgr">

    .... 생략 ....

    <select id="view" resultType="mgrBean" parameterType="string">

        SELECT MGR_ID AS mgrId,

                  MGR_NM AS mgrNm

                  .... 생략 ....

          FROM CO_MGR

        WHERE MGR_ID = #{mgrId}

    </select>

    

    ....


위에서 'view' id를 갖는 쿼리문의 실행결과는 resultType으로 지정한 mgrBean이라는 alias로 지정된 클래스의 멤버변수에 자동으로 바인딩(맵핑) 되어야 하는데 일부 칼럼은 되고, 일부 칼럼은 안되는 경우가 발생했다.


구글신에게 물어봐도 답을 못찾아서 이것 저것 설정 파일을 건드리다가 아래와 같이 해결했다.

(구글이 못찾을 경우의 대부분은 내가 만난 문제가 매우 지엽적인 경우이다. 따라서 내 환경에 문제가 있을 가능성이 높다)


[myBatis 설정파일]


<configuration>

    .... 생략 ....

    <setting name="useColumnLabel" value="true" />


    ....


DB 칼럼명 대신에 칼럼라벨을 대신 사용하겠다는 설정이며 디폴트 값은 true이다.


이전에 오라클을 사용하면서 저 값을 fasle로 설정한 후 문제가 없었기에 다른 DB에서도 당연히 정상 동작하는 줄 알았는데 MariaDB를 사용하니 문제가 발생했다.


JDBC 드라이버 바꿔가면서 1시간 정도 삽질한 기념으로, 본 시행착오를 글로 남겨본다.




+ Recent posts