by 돼지뚱뙝이 [2015.12.30 15:01:14]
안녕하세요 어디에 올려야할지몰라서 여기에올려요..
제가 마이바티스 if문안에 selectkey 문을 넣어서 넘어온값이 null값이면 selectkey문 안에있는 채번을해서 값을 넣고
넘어온값이 null 이 아니면 넘어온값을 넣을려고하는대 혹시 if문안에 select key를 넣을수있을까요?
<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>
MyBatis 한글 메뉴얼 : http://kldp.net/projects/fwko/download/note/3410
음.. 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를 넣을수 없는건지 알고싶어서요.
문법 오류입니다.
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>감사합니다 답변감사해요 참고해서 쿼리를짜야겠습니다.