ibatis 分页的简单实现
ibatis 物理分页的简单实现
cheungmine 2013-8-26
使用SSI (Struts2, Spring3, iBATIS2.3)框架开发Web服务的时候有一个需求就是对查询得到的结果分页显示. iBATIS2的查询函数主要有: queryForList 和 queryForPaginatedList
queryForPaginatedList 据说可以直接分页, 以至于在数据量大了的时候, 性能急剧下降, 根本不能使用.
回到 queryForList, 如下调用可以取得queryEntities的全部数据:
List<EntityClass> entities = null;
entities = getSqlMapClientTemplate().queryForList("queryEntities", paramsMap);
如果我们需要知道记录总数, 则需要:
List<Long> rowCount = getSqlMapClientTemplate().queryForList("getRowCount", paramsMap);
我的EntityClass.xml如下:
<!-- select sql -->
<select id="queryEntities"
parameterClass="java.util.HashMap"
resultClass="EntityClass"
resultMap="EntityClassResultMapDefault">
<![CDATA[
SELECT * FROM
]]> <dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="param.itemid">
<![CDATA[
(itemid = #param.itemid:VARCHAR#)
]]>
</isNotEmpty>
<isNotEmpty prepend="AND" property="param.brandname">
<![CDATA[
(brandname like #param.brandname:VARCHAR#)
]]>
</isNotEmpty>
</dynamic>
<dynamic prepend="LIMIT">
<isNotEmpty property="limit" >
<![CDATA[
#limit:INTEGER#
]]>
</isNotEmpty>
</dynamic>
<dynamic prepend="OFFSET">
<isNotEmpty property="offset" >
<![CDATA[
#offset:INTEGER#
]]>
</isNotEmpty>
</dynamic>
</select> <select id="getRowCount"
parameterClass="java.util.HashMap"
resultClass="java.lang.Long">
<![CDATA[
SELECT COUNT(*) FROM ent_table
]]> <dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="param.itemid">
<![CDATA[
(itemid = #param.itemid:VARCHAR#)
]]>
</isNotEmpty>
<isNotEmpty prepend="AND" property="param.brandname">
<![CDATA[
(brandname like #param.brandname:VARCHAR#)
]]>
</isNotEmpty>
</dynamic>
</select>
因此代码中需要在第一次执行queryEntities之前, 先执行getRowCount以取得记录数目. 而queryEntities由于采用了SELECT * FROM table WHERE condition LIMIT m OFFSET n 语法, 会自动跳过n个结果记录(0-based), 返回不超过m条记录. 这要求数据库支持, MySQL, Sqlite 可以. 注意, OFFSET n是在返回的结果集中跳过前n个.
以上是简单的iBATIS物理分页的实现, 显然每次我们翻页的时候都要执行一次查询, 但是由于我们只取得LIMIT 条记录, 因此对服务器的内存消耗是固定的小尺寸. 这对浏览大记录集尤为有用.
ibatis 分页的简单实现的更多相关文章
- php对文本文件进行分页功能简单实现
php对文本文件进行分页功能简单实现 <!DOCTYPE> <html> <head> <meta http-equiv="Content-type ...
- Jsp分页的简单制作
Jsp分页的简单制作 运行环境:jsp+tomcat+eclipse 技术:servlet+jsp+mysql 分页技术还区分两个:假分页和真分页 假分页:一次性从数据库读出表的所有数据一次性的返回给 ...
- Spring MVC 关于分页的简单实现
据本人了解,目前较常用的分页实现办法有两种: 1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示. 2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数 ...
- ibatis分页的两种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- php分页代码简单实现
版权声明:本文为博主原创文章,未经博主允许不得转载. 数据库操作类代码:mysqli.func.php <?php // 数据库连接常量 define('DB_HOST', 'localhost ...
- ScrollView图片分页显示-简单
用到的控件: 1>UIScrollView:宽度和图片的宽度一样,因为分页的代码就一句 // 设置分页,这个分页的原理实际上是按照ScrollView的宽进行分页的,这里的图片的宽由于和Scro ...
- 深入了解ibatis源码----简单ibatis示例代码
搭建源码环境: 1.创建sql数据库. CREATE TABLE USER_ACCOUNT ( USERID INT(3) NOT NULL AUTO_INCREMENT, USERNAME VARC ...
- 好用的ASP.NET 分页类 简单好用 支持 AJAX 自定义文字
在做网站没用 JS UI控件时 很实用 用法: var ps=new PageString(); /*可选参数*/ ps.SetIsEnglish = true;// 是否是英文 (默认:false) ...
- Javaweb分页功能简单实现
效果如下图 数据库中的数据 页面效果 首先,创建一个通用类Page,代码及 ...
随机推荐
- Java核心 --- 泛型
CoreJava 泛型 java泛型的出现避免了强制类型转换,便于代码更好的被阅读 本文的写作参照了张孝祥的泛型介绍:http://www.itcast.cn/news/dbfd20f1/f4b1/4 ...
- HTTP Post请求过程详解
摘要: HTTP(HyperText Transfer Protocol),超文本传输协议,是一个客户端和服务器端请求和应答的标准(TCP),客户端是终端用户,服务器端是网站. HTTP是基于Sock ...
- WebApi参数传递
c# webapi的参数传递方式:1.查询字符串(query string):2.内容主体(content body) 当然也有cookie或url部分或头部信息(header)等其它传方式,这里仅讨 ...
- 14个超赞的响应式HTML5模板免费下载
现在HTML5已经势不可挡.很多朋友开始学习HTML5,当你已经学习过一些HTML5的教程之后,是不是想立即开始实战了呢?对,现在就开始吧,不过 找一些优秀的HTML5模板案例练习是相当不错的注意.当 ...
- jquerymobile,手机端click无效
1.直接把<script>放到html代码后面,不要放到@section里面. 2.使用代理.如下所示: <script type="text/javascript&quo ...
- c# 运行时替换某文件源代码(将XML 转换成 某个枚举并写入源文件)
var sr = new StreamReader(Server.MapPath("~/WEB-INF/rule.config")); XmlDocument doc = new ...
- 转】windows下使用批处理脚本实现多个版本的JDK切换
原博文出自于: http://www.cnblogs.com/xdp-gacl/p/5209386.html 感谢! 一.JDK版本切换批处理脚本 我们平时在window上做开发的时候,可能需要同时开 ...
- HDOJ_1010 Tempter of the Bone
http://acm.hdu.edu.cn/showproblem.php?pid=1010 奇偶剪枝:可以把map看成这样: 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 ...
- .net 配置ueditor
添加引用如下: <script src="../Ueditor/ueditor.config.js" type="text/javascript"> ...
- 10 个你需要了解的最佳 javascript 开发实践
原文:Top 10 “Must Follow” JavaScript Best Practices Javascript 的很多扩展的特性是的它变得更加的犀利, 同时也给予程序员机会创建更漂亮并且更让 ...