如何查询MyBatis<sql>片段的静态参数值?

How to query the value of a static parameter of MyBatis <sql> fragment?

在MyBatis中是否可以结合静态参数化<sql>reusable fragments with <if> dynamic SQL?

如何查询static的值(=not来自Java方法,而是直接在mapper XML) MyBatis <sql> 片段的参数?

问题是不是如何在MyBatis中比较String值,而是如何查询一个static的值 参数.

我正在尝试使用静态参数 source 调用可重用元素 select-part

我尝试了各种写 <if test="..."> 条件的方法,但都失败了:

简化的映射器 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>

不幸的是,当前的实现有一个 "bug",它不会替换 SQL 片段中 XML 属性中的占位符。仅替换文本节点中的占位符。我认为这是应该修复的实现中的错误。我已经在我的 fork 中实现了它:https://github.com/kmoco2am/mybatis-3 我会尝试推送到原始存储库。