if判断
select count(*) from user <!-- where可以自动去掉第一个条件中的and --> <where> <if test="user!=null"> <if test="user.sex!=null and user.sex!='' "> and user.sex=#{user.sex} </if> </if> </where>
sql片段
定义
<!-- 定义sql片段 id:sql片段的唯一标识 经验:是基于单表来定义sql片段,这样定义使sql片段可重用性高 在sql片段中不要包括where --> <sql id="query_user_where"> <if test="user!=null"> <if test="user.sex!=null and user.sex!='' "> and user.sex=#{user.sex} </if> </if> </sql>
引用
select * from user <where> <!-- id为sql片段的唯一标识 如果使用的是其他文件中的sql片段 需要加上namespace --> <include refid="query_user_where"></include> </where>
foreach标签
<!-- 使用foreach遍历,传入ids collection:指定输入对象中集合属性 item:每个遍历生成的对象 open:开始遍历时拼接的串 close:结束遍历时拼接的串 separator:遍历的两个对象中需要拼接的串 --> <!-- 需求 select * from user where sex="1" and (id=1 or id=2 or id=3) 对 and (id=1 or id=2 or id=3) 操作 --> <foreach collection="ids" item="id" open="and (" close=")" separator="or"> id=#{id} </foreach>