if元素用法:
<select id="getRoleAndUsers" parameterType="int" resultMap="getRoleByCascade2">
select id ,role_name as roleName ,note from t_role where id = #{id}
<if test="roleName != null and roleName != ''">
and role_name like concat('%',#{roleName},'%')
</if>
</select>
choose、when、othersize元素用法:这三个元素充当了switch语句
<select id="findRoles" parameterType="pojo.Role">
select role_no, role_name,note from t_role
where 1= 1
<choose>
<when test="roleName != null and roleNo != ''">
and role_no = #{roleNo}
</when>
<when test="roleName != null and roleName != ''">
and role_name like concat('%',#{roleName},'%')
</when>
<otherwise>
AND note is not null
</otherwise>
</choose>
</select>
trim、where、set元素用法:
trim去除多余的and或者or
<select id="getRoleAndUsers" parameterType="int" resultMap="getRoleByCascade2">
select id ,role_name as roleName ,note from t_role
<trim prefix="where" prefixOverrides="and">
<if test="roleName != null and roleName != ''">
and id = #{id}
</if>
</trim>
</select>
其中prefix:代表语句前缀
prefixOverrides:代表去除哪种关键字
set用法:
<update id="updateRole" parameterType="pojo.Role">
update t_role
<set>
<if test="roleName!=null and roleName !='' ">
role_name = #{roleName}
</if>
</set>
where role_no = #{roleNo}
</update>
foreach元素用法:
<select id="findUserBySex" resultType="user">
select * from t_role where role_no in
<foreach item="roleNo" index="index" collection="roleNoList" open="( " separator = "," close=")">
#{roleNo}
</foreach>
</select>
解释:
collection:是传递过来的参数,该参数应该是个类似(1,3,4,5)的格式
item:循环的当前元素
index:当前元素在集合中的位置下表
bind元素用法:
类似与其别名:<bind name = "pattern" value = "'%'+_parameter + '%'"/>
然后#{pattern} = '%'_parameter %'