where子句不要随意使用动态sql语句
错误示范 (虽然可以在controller进行参数校验,但是这是mapper接口,别人复用的时候,如果没有进行校验,而且并没有传入id值,会导致where子句失效,则会导致update语句会更新整表)
<update id="updateBook" parameterType="Book">
update book set
<trim suffixOverrides=",">
<if test="name != null">name = #{name} ,</if>
</trim>
<where>
<if test="id !=null">
id =#{id}
</if>
</where>
</update>
正确示范
<update id="updateBook" parameterType="Book">
update book set
<trim suffixOverrides=",">
<if test="name != null">name = #{name} ,</if>
</trim>
where id =#{id}
</update>
一些知识(trim标签)
1、<trim suffixOverrides=",">完成拼接sql后,需要消除的后缀
2、parameterType="Book"表示传入的参数是Book类,写了这个就直接name=#{name}
不需要name=#{book.name}
3、<if test="name != null">这个判空写写也挺好
<update id="updateBook" parameterType="Book">
update book set
<trim suffixOverrides=",">
<if test="name != null">name = #{name} ,</if>
</trim>
where id =#{id}
</update>