MyBatis 특정컬럼값만 null, @Param의 존재

이영진·2022년 1월 19일
0
post-custom-banner

특정컬럼값만 null

mybatis연동을 시작하고, 로그인 로직을 실행하고있었던중
mapper.xml 일부분

    <select id="findLoginId" parameterType="map" resultType="git.demo.domain.Member">-->
        select id, userid, pw from member-->
        where userid= #{loginId} and pw= #{loginPw}-->
    </select>-->

db에서의 쿼리문 실행결과

ide에서의 실행

도무지원인을모르겠다. 이것저것 조립해보고 빼보고 하는것처럼 실험해봐도 계속 pw컬럼만 누락된다.
웃긴건 db에는 잘 입력이되어있다.
이거는분명 mybatis에 뭔가 문제가있는거라는 생각을했다.


  <resultMap id="memberDTO" type="git.demo.domain.Member">
        <result property="id" column="id"/>
        <result property="userId" column="userid"/>
        <result property="userPw" column="pw"/>
    </resultMap>

    <select id="findLoginId" resultMap="memberDTO">
        select id, userid,pw from member
        where userid= #{loginId} and pw= #{loginPw}
    </select>

다음과같이 mapper.xml의 코드를 변경하였다.

resultType과 resultMap의 차이에서 나오는 거라는 결론을지었다.
공식문서에서는 resultType은 리턴타입의 풀패키지명을 적어서 클래스의 경로를 명시하여 자동매핑하는것이고
resultMap은 개발자가 직접 POJO클래스에 매핑하여, 제한없이 사용가능하다고 되어있다.

자동매핑을 해주느냐, 수동매핑을 해주느냐의 차이이다.

@Param

mybatis에서는 2개이상의 데이터를 파라미터로 전달받기위해서 Map을이용하거나, @Param을 이용해야한다고 한다.
이것을 달지않고 진행하여 mapping을 계속 못해주는 상태에서 삽질을했다.

post-custom-banner

0개의 댓글