這種問題在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>