1. 程式人生 > >mybatis 動態拼接mysql語句

mybatis 動態拼接mysql語句

問題描述

當傳入的引數存在空時,在生成的mysql語句中,應該不存在,此時需要動態拼接mysql語句。

拼接方法 mybatis 的 trim 標籤

下面是修改語句的拼接:

...
<update id="updateUser" parameterType="com.spring.handlers.model.User">
        UPDATE `user` 
        <trim prefix="set" suffixOverrides=",">
            <if test="departmentId != null and departmentId != ''"
> department_id = #{departmentId} , </if> <if test="userName != null and userName != ''"> username='${userName}', </if> <if test="password != null and password != ''"> password='${password}'
, </if> </trim> WHERE id = 1; </update> ...

利用trim標籤,可以設定開頭為 set ,和去掉末尾的逗號。
trim標籤的屬性:
prefix :字首,在拼接語句前面加上的欄位;
suffix:字尾,在拼接語句後加上的欄位;
prefixOverrides :字首忽略,可以把包含內容的首部某些內容覆蓋,即忽略;
suffixOverrides:字尾忽略,將內容最後的內容忽略。

換一種寫法: set 標籤

<update id="updateUserTwo"
parameterType="com.spring.handlers.model.User"> UPDATE `user` <set> <if test="departmentId != null and departmentId != ''"> department_id = #{departmentId} , </if> <if test="userName != null and userName != ''"> username='${userName}', </if> <if test="password != null and password != ''"> password='${password}', </if> </set> WHERE id = #{id}; </update>

這段程式碼,跟上面trim實現的功能是一樣的。自己體會。