场景:动态传入字段名,并修改值;
方案一:利用$和#的区别
核心SQL:update table_name set ${column_name} = #{column_value};
延展:如果多个字段动态修改,则封装list<map>循环,此处知识点传送门点击前往(思路参考);
缺点:$会存在SQL注入的问题;
方案二:封装实体类(推荐 无sql注入问题)
借鉴思路如下
<update id="updateProduct" parameterType="com.xxx.model.portal.PortalProduct">
update portal_product
<set>
<if test="title != null">
title = #{title},
</if>
<if test="brandId != null">
brand_id = #{brandId},
</if>
<if test="userId != null">
user_id = #{userId},
</if>
<if test="remark != null">
remark = #{remark},
</if>
<if test="updateUser != null">
update_user = #{updateUser},
update_date = now()
</if>
</set>
where id = #{id}
</update>