if标签
<!-- 根据条件查询用户-->
<select id="findByCondition" parameterType="user" resultType="user">
select * from user where 1=1
<if test="username!=null">
and username = #{username}
</if>
<if test="sex!=null">
and sex = #{sex}
</if>
</select>
where标签
<!-- 根据条件查询用户-->
<select id="findByCondition" parameterType="user" resultType="user">
select * from user
<where>
<if test="username!=null">
and username = #{username}
</if>
<if test="sex!=null">
and sex = #{sex}
</if>
</where>
</select>
foreach标签
QueryVo类:
public class QueryVo {
User user;
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;
}
}
持久层Dao接口
List<User> findByIds(QueryVo vo);
持久层Dao映射配置:
<!--根据id集合查询用户-->
<select id="findByIds" parameterType="queryvo" resultType="user">
select * from user
<where>
<if test="ids!=null and ids.size()>0">
<foreach collection="ids" open="and id in (" close=")" item="id" separator=",">
#{id}<!--此处的大括号内容的书写和item一样-->
</foreach>
</if>
</where>
</select>
测试代码:
/**
* 根据id集合查询
*/
@Test
public void testFindByIds(){
QueryVo vo = new QueryVo();
List<Integer> list = new ArrayList<>();
list.add(41);
list.add(42);
list.add(43);
vo.setIds(list);
List<User> users = userDao.findByIds(vo);
for (User u : users){
System.out.println(u);
}
}
参考视频:https://www.bilibili.com/video/av47952553/?p=47 (p=46,47,48)