<if test="name != null">
name like concat('%',#{name},'%')
</if>
示例:
<select id="list" resultType="com.itheima.pojo.Emp">
select *
from emp where
<if test="name!=null">
name like concat('%', #{name}, '%')
</if>
<if test="gender!=null">
and gender = #{gender}
</if>
<if test="begin!=null and end!=null">
and entrydate between #{begin} and #{end}
</if>
order by update_time desc
</select>
select *
from emp
<where>
<!-- where的作用:1.动态的生成where 2.自动判断是否需要and , or等关键字 -->
<if test="name!=null">
name like concat('%', #{name}, '%')
</if>
<if test="gender!=null">
and gender = #{gender}
</if>
<if test="begin!=null and end!=null">
and entrydate between #{begin} and #{end}
</if>
</where>
order by update_time desc
</select>
//批量删除
public void deleteBylds(List<Integer> ids);
XML映射文件
<!--批量删除员工的操作 (18,19, 20)-->
<!--
collection :遍历的集合,与mapper中的集合名保持一致即可
item:遍历出来的元素,名称任取
separator:分隔符
open:遍历开始前拼接的SQ工片段
close:遍历结束局拼接的SQL片段
-->
<delete id="deleteByIds">
delete from emp where id in
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
4.<sql>,<include>
<sql><include>这两个标签解决了代码复用性的问题,类似于方法的定义与调用
原select语句(对比)
<select id="list" resultType="com.itheima.pojo.Emp">
select id,username, password,name, gender,image,job,entrydate,dept_id,create_time,update_time
from emp
<where>
<if test="name!=null">
name like concat('%', #{name}, '%')
</if>
<if test="gender!=null">
and gender = #{gender}
</if>
<if test="begin!=null and end!=null">
and entrydate between #{begin} and #{end}
</if>
</where>
order by update_time desc
</select>
<select id="list" resultType="com.itheima.pojo.Emp">
<include refid="commonSelect"/>
<where>
<if test="name!=null">
name like concat('%', #{name}, '%')
</if>
<if test="gender!=null">
and gender = #{gender}
</if>
<if test="begin!=null and end!=null">
and entrydate between #{begin} and #{end}
</if>
</where>
order by update_time desc
</select>