mybatis中有些特殊字符应用在sql中,最常见的莫过于“>” 和 “<”。
“>”在mybatis中是“大于”的意思,等同于符号“>”。
“<”在mybatis中是“小于”的意思,等同于符号“<”。
例如在mybatis中配置这样的一段sql:
<select id="findAllByCondition" parameterType="RYXX" resultMap="ryxxResult">
SELECT u.*,
CASE
WHEN u.RYZT = 1 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) > 0 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) < 1 THEN 1
WHEN u.RYZT = 1 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) < 1 THEN 2
ELSE 0 END sfdq,
dw.DWMC FROM B_TZ_RYGL_RYXX u LEFT JOIN B_RS_DW dw ON u.DW = dw.DWBH
<where>
1=1
<if test="xh != null and xh != ''">AND u.XH = #{xh}</if>
<if test="jyxm != null and jyxm != ''">AND u.JYXM like '%'||#{jyxm}||'%'</if>
<if test="gh != null and gh != ''">AND u.GH = #{gh}</if>
<if test="dj != null and dj != ''">AND u.DJ = #{dj}</if>
<if test="ryzt != null and ryzt != ''">AND u.RYZT = #{ryzt}</if>
<if test="nl != null and nl != ''">AND (to_char(sysdate, 'yyyy') - substr(u.SFZH, 7, 4)) = #{nl}</if>
<if test="xl != null and xl != ''">AND u.XL = #{xl}</if>
<if test="yj != null and yj != ''">AND u.YJ = #{yj}</if>
<if test="xb != null and xb != ''">AND u.XB = #{xb}</if>
<if test="htkssj != null and htkssj != ''">AND u.HTKSSJ = #{htkssj}</if>
<if test="dw != null and dw != ''">AND u.DW IN (SELECT DWBH FROM B_RS_DW d start with d.DWBH=#{dw} connect by d.LSGX=prior d.DWBH)</if>
<if test="sfdq == 1">AND u.RYZT = 1 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) > 0 AND MONTHS_BETWEEN(TO_DATE(u.HTJSSJ,'YYYY-MM-DD'),SYSDATE) < 1</if>
<!-- 此处增加字段检索条件 -->
</where>
ORDER BY u.DJSJ DESC
</select>
经过plsql的自动转换过后(此处的查询条件仅u.DW一项):SELECT u.*,
CASE
WHEN u.RYZT = 1 AND
MONTHS_BETWEEN(TO_DATE(u.HTJSSJ, 'YYYY-MM-DD'), SYSDATE) > 0 AND
MONTHS_BETWEEN(TO_DATE(u.HTJSSJ, 'YYYY-MM-DD'), SYSDATE) < 1 THEN
1
WHEN u.RYZT = 1 AND
MONTHS_BETWEEN(TO_DATE(u.HTJSSJ, 'YYYY-MM-DD'), SYSDATE) < 1 THEN
2
ELSE
0
END sfdq,
dw.DWMC
FROM B_TZ_RYGL_RYXX u
LEFT JOIN B_RS_DW dw
ON u.DW = dw.DWBH
WHERE 1 = 1
AND u.DW IN (SELECT DWBH
FROM B_RS_DW d
start with d.DWBH = ?
connect by d.LSGX = prior d.DWBH)
ORDER BY u.DJSJ DESC