/** * 根据用户信息,查询用户列表 * @param user * @return */ List<User> findByUser(User user);
<select id="findByUser" resultType="user" parameterType="user"> select * from user where 1=1 <if test="username!=null and username != ‘‘ "> and username like #{username} </if> <if test="address != null"> and address like #{address} </if> </select>
<if>标签的test属性中写的是对象的属性名,如果是包装类的对象要使用OGNL表达式的写法。需要注意 where 1=1 的作用。
<!-- 根据用户信息查询 --> <select id="findByUser" resultType="user" parameterType="user"> <include refid="defaultSql"></include> <where> <if test="username!=null and username != ‘‘ "> and username like #{username} </if> <if test="address != null"> and address like #{address} </if> </where> </select>
/** * 根据 id 集合查询用户 * @param vo * @return */ List<User> findInIds(QueryVo vo);
<!-- 查询所有用户在 id 的集合之中 -->
<select id="findInIds" resultType="user" parameterType="queryvo">
<!-- select * from user where id in (1,2,3,4,5); --> <include refid="defaultSql"></include>
<where>
<if test="ids != null and ids.size() > 0"> <foreach collection="ids" open="id in ( " close=")" item="uid" separator=","> #{uid} </foreach> </if>
</where>
</select>
Sql语句:select 字段 from user where id in (?)
<foreach> 标签用于遍历集合,它的属性:
collection:代表要遍历的集合元素,注意编写时不要写#{}
open:代表语句的开始部分。
close:代表语句的结束部分。
item:代表遍历集合的每个元素,生成的变量名
sperator:代表分隔符。
原文:https://www.cnblogs.com/guancangtingbai/p/12614911.html