论坛首页 Java企业应用论坛

【原创】iBatis分页查询的性能问题分析

浏览 23499 次
精华帖 (0) :: 良好帖 (7) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-14  
chenlixun 写道
首先肯定一下楼主的钻研精神,哈哈。

推荐动态生成SQL(应用基础组件)、数据库端分页。它们是性能的保障!
动态生成SQL的通用性好;数据库端分页的通用性差。


没看懂什么意思,呵呵。到底推荐哪一个?
0 请登录后投票
   发表时间:2010-04-28  
汗!

**ibatis原来是机械的next().之前还真没想过这样的问题,hibernate根据数据源做sql级别的优化看来是优越的,也许因为ibatis那些设计者想着能很灵活的支持sql,所以就懒得写了,呵呵。不过这种“偷懒”降低了移植性。

**至于ispring提出的安全控制,我怎么感觉说得跟这个是两码事了?
0 请登录后投票
   发表时间:2010-05-17  
ibatis在生产过程中使用一般是配合代码自动生成工具使用的,如果是手写代码,其ibatis的配置工作相当繁重,而且ibatis在数据库的兼容性方便做的不是很好,所以用ibatis做分页时,为了达到其性能优势,最好采用针对不同数据库的物理分页。
0 请登录后投票
   发表时间:2010-05-17  
everher 写道
ibatis在生产过程中使用一般是配合代码自动生成工具使用的,如果是手写代码,其ibatis的配置工作相当繁重,而且ibatis在数据库的兼容性方便做的不是很好,所以用ibatis做分页时,为了达到其性能优势,最好采用针对不同数据库的物理分页。



能讲述下你关于“配置工作相当繁重”的理解么?
0 请登录后投票
   发表时间:2010-05-26  
第三种办法是弃用iBatis的分页查询方法queryForList(String sql,Object obj,int maxResult,int  skipResult),而用普通查询方法,queryForList(String sql,Object obj)。只不过把maxResult和skipResult都作为obj的变量传到sql里去。如下:
<select id="queryAllUser" resultMap="user">
select *
  from (select row_.*, rownum rownum_
          from (SELECT * FROM user_tab) row_
         where rownum <= #_maxResult#)
where rownum_ > #_skipResult#
    </select>
-----------------------------------------
这才是正解。
鄙人一般都这样分页。
这样分页估计和hibenate的性能没什么区别,并且还可以手动优化。
0 请登录后投票
   发表时间:2010-05-27  
回楼上

貌似是parameterClass - -!!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics