1. 动态 SQL 之<if>标签
* 注意:<if>标签的 test 属性中写的是对象的属性名.
* 如果是包装类的对象要使用 OGNL 表达式的写法。
* 另外要注意 where 1=1 的作用~!
* 例如:
<select id="findAll" resultType="com.yang.daomain.User">
select * from user where 1= 1
<if test="and username != null ">
username = #{username}
</if>
</select>
2. 动态 SQL 之<where>标签
* 为了简化上面 where 1=1 的条件拼装.
* 我们可以采用<where>标签来简化开发。
* 例如:
<select id="findAll" resultType="com.yang.daomain.User">
select * from user
<where>
<if test="and username != null">
username = #{username}
</if>
<if test="userSex != null ">
and sex = #{userSex}
</if>
</where>
</select>
3. 动态标签之<foreach>标签
* SQL 语句: select 字段 from user where id in (?)
* <foreach>标签用于遍历集合,它的属性:
* collection:代表要遍历的集合元素,注意编写时不要写#{}
* open:代表语句的开始部分
* close:代表结束部分
* item:代表遍历集合的每个元素,生成的变量名
* sperator:代表分隔符
* 例如:
<select id="findUserInIds" resultMap="userMap" parameterType="queryVo">
<include refid="defaultUser"/>
<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>
4. 引用代码片段
<sql id="defaultUser"> id是别的sql引用时需要名字
select * from user
</sql>
此时的查询:
<select id="findAll" resultMap="userMap">
<include refid="defaultUser"/>
</select>