日期:2014-05-17  浏览次数:20477 次

iBatis中一个书写sql问题,你们是怎么处理的
写sql分页查询时,要写2个sql,一个是统计总数,一个是写取分页的具体记录

如:

<select id="GetTaskCount" parameterClass="Task" resultMap="Task">
  select count(1) from tasks
  <dynamicprepend="where">
<isNotNull property="taskname" prepend="and">
tasknamee=#taskname#
</isNotNull>
.....
这里有很多条件,有10多个条件
</dynamic>
</select>
<select id="GetTaskPageList" parameterClass="Task" resultMap="Task">
  这里是分页查询的sql  
  <dynamicprepend="where">
<isNotNull property="taskname" prepend="and">
tasknamee=#taskname#
</isNotNull>
.....
这里有很多条件,有10多个条件
</dynamic>
</select>

这两条sql的条件是完全一样的,条件又要重复复制一遍

你们是怎么处理的呢,有办法这两条sql语句重复条件部分吗

------解决方案--------------------
--这里是N多条件

<sql id="selectItem_fragment">
FROM items
WHERE parentid = #value#
</sql>

<select id="selectItems" resultClass="Item">
SELECT id, name
<include refid="selectItem_fragment"/>
</select>

用include包含


还有一种方法是用存储过程分页动态查询