if标签
在一个用户查询条件中,无法判断哪一项不为空,怎么根据传入的值去进行查询。
<select id="findUserByCondition" resultType="com.mmz.pojo.User" parameterType="com.mmz.pojo.User">
select * from user where 1=1
<if test="username != null">
and username = #{username}
</if>
</select>
还有条件该如何处理
上面只是根据是否有username进行了判断,如果还有关于性别,年龄其他的字段进行判断,该如何编码?
<if test="sex != null">
and sex = #{sex}
</if>
再在条件里面继续加入判断
where标签
<where>
<if test="username != null">
and username = #{username}
</if>
<if test="sex != null">
and sex = #{sex}
</if>
</where>
省略 where 1=1
foreach标签
<select id="findUserInIds" parameterType="com.mmz.pojo.QueryVo" resultType="com.mmz.pojo.User">
<include refid="defaultUser"></include>
<where>
<if test="ids != null and ids.size()>0">
<foreach collection="ids" open="and id in (" close=")" separator="," item="id">
#{id}
</foreach>
</if>
</where>
</select>
sql标签
<sql id="defaultUser">
select * from user
</sql>
<select id="findUserInIds" parameterType="com.mmz.pojo.QueryVo" resultType="com.mmz.pojo.User">
<include refid="defaultUser"></include>
<where>
<if test="ids != null and ids.size()>0">
<foreach collection="ids" open="and id in (" close=")" separator="," item="id">
#{id}
</foreach>
</if>
</where>
</select>
在inclued标签中引用。
include标签
include标签
<include refid="defaultUser"></include>
refid的属性为上面sql标签中的id