ibatis分页

 Spring与Ibatis在分页性能上的优化 收藏

在Spring Dao中使用Ibatis返回分页记录集时,一般是采用如下方式可以很方便完成任务:

 

  1. public List<Cxryxx> getList(HashMap<String, Object> hashMap, int skip,   
  2.         int max) throws DataAccessException {   
  3.     return getSqlMapClientTemplate().queryForList("getCxryxxList", hashMap,   
  4.             skip, max);   
  5. }   

 

   但在数据表中记录数比较大,超过百万时,返回的速度不堪忍受。

后来在改进了statement语句,在statement上控制分页,原来的statement

 

  1. <statement id="getCxryxxList" resultMap="result">   
  2.     select * from cxryxx    
  3. </statement>  

 

改进后

 

  1. <statement id="getCxryxxList" resultMap="result">   
  2.     select * from cxryxx    
  3.     <dynamic prepend="limit">   
  4.         #limit#   
  5.     </dynamic>   
  6.     <dynamic prepend="offset">   
  7.         #offset#   
  8.     </dynamic>   
  9. </statement>    

 

前提是数据库要支持 limit 和 offset。

然后在DAO再增加不带skip和max的getList方法。

 

  1. public List<Cxryxx> getList(HashMap<String, Object> hashMap)   
  2.         throws DataAccessException {   
  3.     return getSqlMapClientTemplate().queryForList("getCxryxxList", hashMap);   
  4. }  

 

使用时,只需把limit和offset的值写到hashMap上就行了。

改进后,执行180万数据量的分页,取第1页分页数据时,原来需要20秒以上的执行速度,现在只需1秒不到。分页数增大时,所需的时间也会相应更多,但比原来的方法,节约了不少时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值