-
动态 SQL 之<if>
-
动态 SQL 之<foreach>
<if>
我们根据实体类的不同取值,使用不同的 SQL语句来进行查询。比如在 id如果不为空时可以根据id查询,如果username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。
<!-- if的使用-->
<select id="findByCondition" parameterType="com.domain.User" resultType="com.domain.User">
select * from User
<where>
<if test="id!=0">
and id=${id}
</if>
<if test="username!=null">
and username='${username}'
</if>
<if test="password!=null">
and password='${password}'
</if>
</where>
</select>
<foreach>
循环执行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)
foreach标签的属性含义如下:
<foreach>标签用于遍历集合,它的属性:
•collection:代表要遍历的集合元素,注意编写时不要写#{}
•open:代表语句的开始部分
•close:代表结束部分
•item:代表遍历集合的每个元素,生成的变量名
•sperator:代表分隔符
<!-- foreach的使用-->
<select id="findByids" parameterType="list" resultType="com.domain.User">
select * from User
<where>
<foreach collection="list" open="id in(" close=")" item="id" separator=",">
${id}
</foreach>
</where>
</select>