是否有可能在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嘗試使用等於 – StanislavL
@StanislavL問題不在於如何比較字符串,而是如何訪問靜態參數。問題是如何查詢源變量的值。它的行爲不像來自Java方法的值。我編輯了問題並更改了標題。 –