MyBatis selectKey

3274 ワード

質問する👀
表Aはemailとindex列をデフォルトキーに、表Bはemailを外部キーに、自動的にnumberタイプ列に設定し、mybatisにemailのみをロードしようとしたところ、エラーが発生しました.
解決策が見つからないため、最終的に外部キー制約条件を削除し、mybatisでクエリーを使用してcolumn値を取得することにしました.
条件を指定するためにif文を使用したが、mybatis上でクエリーをどのように処理するか分からないため、selectKeyの存在を研究中に理解した.
処理しようとしたクエリー
IF(SELECT email FROM表A WHERE email=')[email protected]')
THEN
INSERT INTO review(no, content, like, email, date)
VALuES(seq.nextval,“内容”,1,“[email protected]', sysdate);
END IF;
解決する👀
MyBatis翻訳ドキュメント
<insert id="insert" parameterType="파라미터타입">
	<selectKey keyProperty="email" resultType="결과타입" order="BEFORE">
      <if test="email != ''">
         select distinct email from 테이블A where email = #{email}
      </if>
	</selectKey>
	insert into review(no, content, like, email, date) 
   		values(seq.nextval, #{content}, #{like}, #{email}, sysdate)
</insert>
MultipleselectKeyを使用すると2つの値が得られるそうです.(出典:http://lng1982.tistory.com/228)