使用ibatis实现多条件查询及模糊查询是很有意义的事情。如下的例子就是一个具体应用。
简要说明:
UI界面使用ExtJs
加载数据使用:DWR
日期处理:js插件
后台spring + ibatis
流程分析:js获得检索条件,封装成对象,调用DWR方法,ibatis做数据检索,返回json由Ext Grid 接收。
ibatis中的mapper写法示例:
<select id="getTaskByTaskType" resultMap="result" cacheModel="TaskDetail.TaskDetailCache">
<include refid="select-object"/>
<dynamic prepend="WHERE">
<isNotNull property="id">
<!-- isGreaterThan判断参数是否大于compareValue,isGreaterEquals是大于等于 -->
<isGreaterThan prepend=" and " property="id" compareValue="0">
id like '%$id$%'
</isGreaterThan>
</isNotNull>
<isNotNull property="taskParentid">
<!-- isGreaterThan判断参数是否大于compareValue,isGreaterEquals是大于等于 -->
<isGreaterThan prepend=" and " property="taskParentid" compareValue="0">
task_parentid like '%$taskParentid$%'
</isGreaterThan>
</isNotNull>
<isNotNull property="userId">
<!-- isGreaterThan判断参数是否大于compareValue,isGreaterEquals是大于等于 -->
<isGreaterThan prepend=" and " property="userId" compareValue="0">
user_id like '%$userId$%'
</isGreaterThan>
</isNotNull>
<!-- isNotEmpty判断字串不为空,isEmpty可以判断字串为空 -->
<isNotEmpty prepend=" and " property="taskName">
task_name like '%$taskName$%'
</isNotEmpty>
<isNotEmpty prepend=" and " property="taskStates">
<!-- 模糊查询不能用#,#在是用prepareStatement的?插入参数,$是文本替换 -->
task_state =#taskStates#
</isNotEmpty>
<isNotEmpty prepend=" and " property="taskPublishTime">
<!-- 模糊查询不能用#,#在是用prepareStatement的?插入参数,$是文本替换 -->
task_publishtime between #taskPublishTime# and #queryEndTime#
</isNotEmpty>
</dynamic>
</select>