MyBatis 3 中 Less Than/Equal 运算符的正确语法是什么?

What is the proper syntax for the Less Than/Equal operator in MyBatis 3?

如何在MyBatis 3中使用小于等于

<select id="getLog" resultMap="BaseResultMap" parameterType="java.lang.String">
    SELECT * FROM(
        SELECT * FROM TABLE1
        WHERE COL1 =#{COL1,jdbcType=VARCHAR}
        ORDER BY DATE DESC
    ) TABLE2
    WHERE ROWNUM <= 20
</select>

使用 CDATA 转义类似于 xml 的“<”。

  <select id="getLog" resultMap="BaseResultMap" parameterType="java.lang.String">
    SELECT * FROM(
    SELECT * FROM TABLE1
    WHERE COL1 =#{COL1,jdbcType=VARCHAR}
    ORDER BY DATE DESC
) TABLE2
WHERE ROWNUM <![CDATA[ <= 20 ]]>
</select>

我展示了 Greater Than/Equal 运算符和 Less Than/Equal 运算符的示例:

ROWNUM &gt;= 20
ROWNUM &lt;= 20

或者,为了便于阅读,您可以将它们包装在 CDATA

ROWNUM <![CDATA[ >= ]]> 20
ROWNUM <![CDATA[ <= ]]> 20

可能只有我一个人,但我认为这样更易读:

<select id="getLog" resultMap="BaseResultMap" parameterType="java.lang.String">
  <![CDATA[
    SELECT * FROM(
        SELECT * FROM TABLE1
        WHERE COL1 =]]> #{COL1,jdbcType=VARCHAR} <![CDATA[
        ORDER BY DATE DESC
    ) TABLE2
    WHERE ROWNUM <= 20
  ]]>
</select>

请注意,我必须转义散列参数,这无疑会降低它的可读性。然而,对于没有参数的查询,这非常有效。主要优点是您可以复制粘贴查询并直接在 SQL 中测试它们。