tempName
264
2020-09-16 16:06:01
3
98

mybatis parameterType으로 map을 가져갈때 key가 없는값은??


mybatis를 쓰고 있구요.


parameterType 으로 Liist<map>을 이용하고 배치처리를 위해 foreach를 씁니다.

그래서...


<foreach collection="list" item="item"....생략 >

 into AA (a, b,c ) values (#{item.a}, #{item.b},#{item.c})

</foreach>

로 구성하고 있는데요..

문제는 list에 들어가는 map의 값이 동적이라

map1 = {a:11, b:12}

map2 = {a:11, c:12}

map3 = {b:11, c:12}


와 같이 매번 a,b,c 인자를 다 가지고 오지를 않아서요.  바인딩 에러가 납니다.

저걸 극복하려면

혹시 매핑하는 곳에 if를 다걸어서 null체크를 해주면 되는지

아니면 map들 키값을 다 3개를 들고오도록 맞춰줘야 할까요??/





0
  • 답변 3

  • tempName
    264
    2020-09-16 16:32:55 작성 2020-09-16 16:37:14 수정됨


    <insert id="insertQuery">


        INSERT INTO table (id , name, title) VALUES (#{id, jdbcType=VARCHAR}, #{name, jdbcType=VARCHAR}, #{title, jdbcType=VARCHAR})


    </insert>



    //이런식의 null 처리 방식을 써봐도 안되네요...

    //아 이건 키값문제가 아니라 값이 문제일 경우 쓰는 경우네요

  • 유리세계
    3k
    2020-09-16 17:39:46

    map 을 model vo로 바꾸어서 null 인 c 값을 가지게 하거나

    map을 쓰더라도 값이 없어도 키값은 넣어둘 수는 없나요?

  • tempName
    264
    2020-09-16 18:22:39

    //유리세계

    그냥  값없는 key값을 맵으로 만들어 줘서 해결했네요.

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