1、bind 标签可以使用 OGNL 表达式创建一个变量并将其绑定到上下文中。bind 标签的两个属性都是必选项
bind标签在普通查询和模糊查询中的用法
//value的com.ep.common.EpConstant是我工程中的一个常量类,REJECTED是常量类的一个常量
<select id="getRejectedExamine" resultType="map">
<bind name="REJECTED" value="@com.ep.common.EpConstant@REJECTED"/> //value的com.ep.common.EpConstant是我工程中的一个常量类,REJECTED是常量类的一个常量
SELECT
COUNT(wi.KHXBM) NUM,
sk.KHXBM,
sk.KHXMC,
sk.SJLY,
p.KHJHBM,
p.KHJHMC,
p.KHFABM,
p.NF,
wi.INSTANCE_STATE,
lczt.CODENAME LCZT
FROM
ep_workflow_instance wi
LEFT JOIN ep_plan p ON p.RESOURCE_ID = wi.KHJHID
LEFT JOIN ep_sys_khx sk ON sk.KHXBM = wi.KHXBM
LEFT JOIN dict_cp_workflow_lczt lczt ON lczt.CODEVALUE = wi.INSTANCE_STATE
WHERE 1 = 1
AND wi.REQUEST_USER_ID = #{current_user}
AND wi.LAST_RESULT=#{REJECTED} //可以直接引用bind标签的name
GROUP BY p.KHJHBM, sk.KHXBM
ORDER BY P.JSSJ, CONVERT (sk.KHXMC USING gbk)
</select>
<select id="selectUser" resultType="user" parameterType="user">
<bind name="pattern" value="'%' + username + '%'" />
select id,sex,age,username,password
from user
where username LIKE #{pattern}
</select>
2、ForEach标签用法
collection的值是集合的名字,item的值要和参数值一致
<select id="getUserNameByIdNumber" resultType="map">
SELECT TO_CHAR(WM_CONCAT(USER_NAME)) NAME FROM SYS_UICM_USER WHERE ID_NUMBER IN
<foreach item="list" index="index" collection="RYBHLIST" open="(" close=")" separator=",">
#{list}
</foreach>
</select>
3、解决mybatis查询的时候,in参数超过1000时,oracle不支持的问题
<if test="mydata!= null and mydata.size > 0">
AND dataId IN
<!-- 处理in的集合超过1000条时Oracle不支持的情况 -->
<trim suffixOverrides=" OR dataId IN()"> <!-- 表示删除最后一个条件 -->
<foreach collection="mydata" item="dataItem" index="index" open="(" close=")">
<if test="index != 0">
<choose>
<when test="index % 1000 == 999">) OR dataId IN (</when>
<otherwise>,</otherwise>
</choose>
</if>
#{dataItem}
</foreach>
</trim>
</if>