mybatis 動態拼接mysql語句
阿新 • • 發佈:2019-01-25
問題描述
當傳入的引數存在空時,在生成的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實現的功能是一樣的。自己體會。