마이바티스 질문하나만할께요 ㅠㅠ 0 5 8,844

by 돼지뚱뙝이 [2015.12.30 15:01:14]


안녕하세요 어디에 올려야할지몰라서 여기에올려요..

제가 마이바티스 if문안에 selectkey 문을 넣어서 넘어온값이 null값이면 selectkey문 안에있는 채번을해서 값을 넣고 

넘어온값이 null 이 아니면 넘어온값을 넣을려고하는대 혹시 if문안에 select key를 넣을수있을까요?

by 아발란체 [2015.12.30 15:13:43]
<insert ....>
	<selectKey keyProperty="key" resultType="int" order="BEFORE">
		SELECT no FROM DUAL
	</selectKey>
	INSERT INTO [TABLE_NALE] (
		[target_field1], [target_field2], [target_field3].... 
	) VALUES (
		NVL(#{value1}, ${key}), #{value2}, #{value3}...
	)
</insert>

 


by 아발란체 [2015.12.30 15:16:05]

MyBatis 한글 메뉴얼 : http://kldp.net/projects/fwko/download/note/3410


by 돼지뚱뙝이 [2015.12.30 15:33:37]

음.. selectkey를 쓰는법은 알고있습니다. 제가 원하는건 

   <insert ........>
        <if test="#{key_v} = null">
          <selectKey resultType="string" keyProperty="key_value" order="BEFORE"

            
select count(*)from tab
       
             </selectKey>
              </if>
        insert into tab (num) value(#{key_value})
        </insert>

입니다.

if문안에 selectkey를 넣어서 넘어온값이 null이면 selectkey의 조회값이 null이 아니면 넘어온값을 넣고싶습니다.  현재 설정을하면 

The content of element type "if" must match "(include|trim|where|set|foreach|choose|if|bind)". 라고 오류가 나오는대 문법상의 문제인지 아니면 if문안에 selectkey를 넣을수 없는건지 알고싶어서요.


by 아발란체 [2015.12.30 16:00:14]

문법 오류입니다.

selectKey 값이 null 일 때 특정 값을 넣는 것이라면, 그냥 아래처럼 NVL 함수 쓰는 것이 직관적일 것 같습니다.

<insert ....>
    <selectKey keyProperty="key" resultType="int" order="BEFORE">
        SELECT no FROM DUAL
    </selectKey>
    INSERT INTO [TABLE_NALE] (
        [target_field1], [target_field2], [target_field3]....
    ) VALUES (
        NVL(#{key}, #{value1}), #{value2}, #{value3}...
    )
</insert>
 
selectKey를 통해 값을 얻었는데 null이면 value1이라는 값을 넣는 것입니다.

by 돼지뚱뙝이 [2015.12.30 18:03:59]

감사합니다 답변감사해요 참고해서 쿼리를짜야겠습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입