MyBatisで、を静的にパラメータ化した<sql>
reusable fragmentsと<if>
dynamic SQLを組み合わせることは可能ですか? 静的の値照会する方法MyBatis <sql>フラグメントの静的パラメータの値をクエリする方法はありますか?
(Javaメソッドから来る= ないを、しかしマッパーXMLに直接入力)MyBatisの<sql>
フラグメントのパラメータ?
質問はMyBatisの中でString
値を比較する方法ないですが、どのようにクエリ静的パラメータの値。
スタティックパラメータsource
を使用して、再利用可能な要素select-part
を呼び出しようとしています。
私は<if test="...">
条件を書くのさまざまな方法を試してみましたが、すべて失敗:
<if test="source == 'active'">
<if test="${source} == 'active'">
<if test="#{source} == 'active'">
簡素化マッパーXMLは、このようなものです:
<sql id="select-part">
SELECT d.field1, d.field2, ..., d.fieldN
<if test="${source} == 'active'">
, null AS archivedDate
FROM active_table d
</if>
<if test="${source} == 'archive'">
, d.achived AS archivedDate
FROM archive_table d
</if>
LEFT JOIN ...
ORDER BY ...
</sql>
<select id="fetchData" resultMap="Data">
<include refid="select-part">
<property name="source" value="active"/>
</include>
UNION ALL
<include refid="select-part">
<property name="source" value="archive"/>
</include>
</select>
https://stackoverflow.com/questions/19450304/mybatis-compare-string-value-using-dynamic-query equalを使用するようにしてください – StanislavL
@StanislavL質問は文字列を比較する方法ではなく、静的パラメータ。問題は、ソース変数の値を照会する方法です。値がJavaメソッドから来た場合と同じように動作しません。私は質問を編集してタイトルを変更しました。 –