if标签:
在映射配置文件中
<select id="findUserByCondition" resultType="user" parameterType="user">
select * from user where 1=1
<if test="username!=null">
and username = #{username}
</if>
<if test="sex !=null">
and sex = #{sex}
</if>
</select>
如果test有多个条件要用and而不是用&,如:
<if test="username!=null and sex !=null ">
and username = #{username}
</if>
where标签:
<select id="findUserByCondition" resultType="user" parameterType="user">
select * from user
<where>
<if test="username!=null">
and username = #{username}
</if>
<if test="sex !=null">
and sex = #{sex}
</if>
</where>
</select>
foreach标签:
foreach主要用在构建in条件中,如where id in(),
foreach元素的属性主要有 item,index,collection,open,separator,close。
item集合中每一个元素进行迭代时的别名,
index表示在迭代过程中,每次迭代到的位置,
open该语句以什么开始,
separator在每次进行迭代之间以什么符号作为分隔 符,
close以什么结束,
dao接口
package com.itheima.domain;
import java.util.List;
public class QueryVo {
private User user;
private List<Integer> ids;
public List<Integer> getIds() {
return ids;
}
public void setIds(List<Integer> ids) {
this.ids = ids;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
<!--select * from user where id in(41,42,43) -->
<select id="findUserInIds" resultType="user" >
select * from user
<where>
<if test="ids != null and ids.size()>0">
<foreach collection="ids" open="and id in(" close=")" item="uid" separator=",">
#{uid}
</foreach>
</if>
</where>
</select>