로또왕
60
2020-03-15 16:55:54 작성 2020-03-15 16:56:40 수정됨
1
222

mybatis selectKey 사용


<insert id="example" parameterType="HashMap">
  <forEach item="item" collection="testList">
    <selectKey keyProperty="TEST_CD" resultType="int" order="BEFORE">
      SELECT TEST_CD 
      FROM TEST_TABLE
      WHERE SEQ = #{item.SEQ}
            AND SUB = #{item.SUB};
    </selectKey>

    <if test='TEST_CD = null'>
     INSERT INTO MST_TABLE (TEST_CD, SEQ, SUB)
     VALUES (TEST_CD, #{item.SEQ}, #{item.SUB});
    </if>
    
     INSERT INTO SUB_TABLE (TEST_CD, TCR_CD)
     VALUES (IFNULL(TEST_CD, LAST_INSERT_ID()), #{item.TCR_CD});
  </forEach>
</insert>


selectKey의 결과로 TEST_CD를 구하고 10번 라인 if문에서 바로 비교를 할 수 있는지 궁금합니다

0
0
  • 답변 1

  • 이설란
    3k
    2020-03-16 15:01:38

    지금 프로젝트에서 마이바티스가 없어서 확인할 수 없지만

    일단 사용할 할수 있다고 생각해요.

    단지 위에서처럼 사용하면 에러를 호출할 것 같네요.


    되도록이면 컬럼명과 구분하기 쉽게 keyProperty의 TEST_CD값을 변경하기를 권장하고

    해당 키를 사용하기 위해서는 #{TEST_CD} 이런식으로 사용해야하기 때문에

    <if test = '{#TEST_CD eq null}'>  혹은 <if test = '{#TEST_CD} = null'>  이런식으로

    테스트 해보셔야할 듯합니다.

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