Ibatis分页查询
Ibatis的分页查询,可谓是做的比较糟糕的,这里根据经验,认为能把分页简单化的一些东西分享一下,麻烦的就是这个配置文件了。
1、 在basedao中实现如下方法,其他dao类只要继承该类就可以了:
/* 需要注意statementName对应的为列表的sql,statementName+”_count”对应的为count的sql语句;
*/
public QueryResult search(String statementName,Object model,Pagination page) {
Map map=new HashMap();
map.put(“page”,page);//查询中起作用的就是,起始记录数和截止记录数
map.put(“model”, model);//model就是存放查询的条件
List list=queryForList(statementName, map);
int count=queryForInt(statementName + “_count”, map);
QueryResult result=new QueryResult();
result.setCount(count);
result.setList(list);
return result ;
}
2、 在ibatis的xml文件中做如下定义,注意这里是oracle数据库的实现,mysql等数据库需要 修改一下select的方法
<sql>
<![CDATA[
from TEST_LOG t where 1=1
]]>
<dynamic >
<isNotEmpty property=”model.userName” prepend=” and “>
t.username like ‘%$model.userName$%’
</isNotEmpty>
</dynamic>
</sql>
<select parameterClass=”map” resultClass=”log”>
<![CDATA[ select * from (select rownum rn,t.*
]]>
<include refid=”search_where”/>
<![CDATA[
and rownum<=#page.end#
) A WHERE rn>#page.start#
]]>
</select>
<select parameterClass=”map” resultClass=”Integer”>
<![CDATA[ select count(*)
]]>
<include refid=”search_where”/>
</select>
欢迎转载,请注明出处:亲亲宝宝