这种问题在xml处理sql的程序中经常需要我们来进行特殊处理。
其实很简单,我们只需作如下替换即可避免上述的错误:
< | <= | > | >= | & | ' | " |
< |
<= |
> |
>= |
& |
' |
" |
备注:>=号可以直接在mapper中写,比如:
<if test="platformGoods.last_time == null">
and opg.last_modified >= (date_sub(NOW(), interval '0
0:30:0' day_second))
</if>
备注: 对于>、<、<=都需要转义或者加标签。对于>=号可以直接用,所以我们在项目中如果是<=则将这个转换下转成>=来写在mapper中。
例如常见的时间比较:
错误写法
- <select id="select" parameterType="xxx" resultMap="xxx">
- select
- distinct
- <include refid="Base_Column_List" />
- from xxx
- <where>
- <if test="createDate != null">
- create_date <= #{createDate}
- </if>
- </where>
- </select>
正确写法
- <select id="select" parameterType="xxx" resultMap="xxx">
- select
- distinct
- <include refid="Base_Column_List" />
- from xxx
- <where>
- <if test="createDate != null">
- create_date <= #{createDate}
- </if>
- </where>
- </select>