在多个查询条件下,由于需要拼接sql语句,所以会在前面加上 where 1 = 1
select id,name,gender,email from emp where 1 = 1 <if test="id != null and id != ''"> and id = #{id} </if> <if test="name != null and name != ''"> and name = #{name} </if> </select>
可以使用<where></where>代替:
select id,name,gender,email from emp <where> <if test="id != null and id != ''"> and id = #{id} </if> <if test="name != null and name != ''"> and name = #{name} </if> </where>
还可以使用<trim></trim>代替:
trim标签:
1》prefix="":前缀:trim标签体中是整个字符串拼串 后的结果,prefix给拼串后的整个字符串加一个前缀
2》prefixOverrides="":前缀覆盖: 去掉整个字符串前面多余的字符
3》suffix="":后缀,suffix给拼串后的整个字符串加一个后缀
4》suffixOverrides=""后缀覆盖:去掉整个字符串后面多余的字符
select id,name,gender,email from emp <trim prefix="where" prefixOverrides="and"> <if test="id != null and id != ''"> and id = #{id} </if> <if test="name != null and name != ''"> and name = #{name} </if> </trim>