select的时候使用where或者trim标签
如果后面有条件,where标签就插入一个‘where’。如果标签返回的内容是以AND 或OR 开头的,则它会删除and或or。
<select id="selectByCondition" resultType="com.demo.User" parameterType="com.demo.User">
select * from user
<where>
<if test="username != null and username!=''">
username=#{username}
</if>
<if test="sex!= null and sex!=''">
and sex=#{sex}
</if>
</where>
</select>
prefix:如果trim标签体里面有条件满足,自动加上引号里面的内容
prefixOverrides:自动删除标签体最前面多余的and或者or(注意空格)
<select id="selectByCondition" resultType="com.demo.User" parameterType="com.demo.User">
select * from user
<trim prefix="where" prefixOverrides="and |or ">
<if test="username != null and username != '' ">
and username=#{username}
</if>
<if test="sex != null and sex!=''">
and sex=#{sex}
</if>
</trim>
</select>
update的时候使用set或者trim标签
<update id="updateUserById" parameterType="com.demo.User">
update user
<set>
<if test="username != null and username != ''">
username = #{username},
</if>
<if test="sex != null and sex != ''">
sex = #{sex}
</if>
</set>
where id=#{id}
</update>
如果username=null,sex!=null,sql:update user set sex=? where id=?
如果都不为空,sql:update user set username = ? ,sex = ? where id=?
set:trim标签体里面有条件满足时自动加上引号里面的内容
suffixOverrides:自动删除末尾多余的逗号
<update id="updateUserById" parameterType="com.demo.User">
update user
<trim prefix="set" suffixOverrides=",">
<if test="username != null and username != ''">
u.username = #{username},
</if>
<if test="sex != null and sex != ''">
u.sex = #{sex},
</if>
</trim>
where id=#{id}
</update>