if 标签
一、持久层接口
public interface IUserDao {
List<User> findUsers(User user);
}
二、持久层接口映射文件
<mapper namespace="chu.yi.bo.dao.IUserDao">
<select id="findUsers" resultType="chu.yi.bo.domain.User" parameterType="chu.yi.bo.domain.User">
select * from user where 1=1
<if test="username != null and username != ''">
and username like '%${username}%'
</if>
<if test="sex != null and sex != ''">
and sex = #{sex}
</if>
</select>
</mapper>
注意:if 标签的 test 属性可以使用 OGNL 表达式
三、查询操作
User u = new User();
// 赋值操作
u.set...;
List<User> users = userDao.findUsers(u);
where 标签
一、持久层接口
public interface IUserDao {
List<User> findUsers(User user);
}
二、持久层接口映射文件
<mapper namespace="chu.yi.bo.dao.IUserDao">
<select id="findUsers" resultType="chu.yi.bo.domain.User" parameterType="chu.yi.bo.domain.User">
select * from user
<where>
<if test="username!=null and username != ''">
and username like '%${username}%'
</if>
<if test="sex != null and sex != ''">
and sex = #{sex}
</if>
</where>
</select>
</mapper>
三、查询操作
User u = new User();
// 赋值操作
u.set...;
// 执行操作
List<User> users = userDao.findUsers(u);
foreach 标签使用
一、创建包装类
public class QueryVo {
private List<Integer> ids;
......
}
二、持久层接口
public interface IUserDao {
List<User> findInIds(QueryVo vo);
}
三、持久层接口映射文件
<mapper namespace="chu.yi.bo.dao.IUserDao">
<select id="findInIds" resultType="chu.yi.bo.domain.User" parameterType="chu.yi.bo.domain.QueryVo">
select * from user
<where>
<if test="ids != null and ids.size() > 0">
<foreach collection="ids" open="id in ( " close=")" item="id" separator=",">
#{id}
</foreach>
</if>
</where>
</select>
</mapper>
- collection :代表要遍历的集合元素,注意编写时不要写 #{}
- open :代表语句的开始部分
- close :代表结束部分
- item :代表遍历集合的每个元素,生成的变量名
- sperator :代表分隔符
四、查询操作
QueryVo vo = new QueryVo();
List<Integer> ids = new ArrayList<Integer>();
// 添加查询数据
ids.add;
...
vo.setIds(ids);
//6.执行操作
List<User> users = userDao.findInIds(vo);
SQL 片段
将重复的 sql 提取出来,使用 include 引用,达到 sql 重用的目的。
<!-- 抽取重复的语句代码片段 -->
<sql id="defaultSql">
select * from user
</sql>
<!-- 根据 id 查询 -->
<select id="findById" resultType="UsEr" parameterType="int">
<include refid="defaultSql"/>
where id = #{id}
</select>