`
100Air
  • 浏览: 118094 次
  • 性别: Icon_minigender_1
  • 来自: 海南
社区版块
存档分类
最新评论

spring、ibatis控制oracle分页的问题

阅读更多
开发采用spring+ibatis,数据库用oracle,数据量有几千万以上,而且还要不断的增多,用了三层子查询实现分页控制

下面都只是举的例子
< sqlMap  namespace ="Y_wjlx" >  
 2
 3          < resultMap  class ="com.ctgusec.model.Y_wjlx"  id ="y_wjlx" >  
 4                  < result  property ="wjbh"  column ="wjbh"   />  
 5                  < result  property ="wjmc"  column ="wjmc"   />  
 6          resultMap >  
 7          < select  id ="getAllY_wjlx"  resultMap ="y_wjlx" >  
 
SELECT wjbh,wjmc FROM (SELECT row_.*, rownum rownum_ FROM (select wjbh,wjmc,rownum rn from y_wjlx) row_ WHERE rownum <= #end#) WHERE rownum_ > #start# 
10                  ]]>  
11          select >  
12
13 sqlMap >

用了个模型基类存储分页参数,模型类可以继承此类
public   class  BaseModel 

        
private  Integer start  =   0

        
private  Integer end  =   30

        
private  Integer size  =   30

        
private  Integer currentPage; 

        
private  Integer priviousPage; 

        
private  Integer nextPage; 

        
public  BaseModel() 
                
        }
 
        
public  BaseModel(Integer currentPage)  
                
if  (currentPage  >   0
                        
this .currentPage  =  currentPage; 
                        
this .priviousPage  =  currentPage  -   1
                        
this .nextPage  =  currentPage  +   1
                        
this .start  =  priviousPage  *  size; 
                        
this .end  =  currentPage  *  size; 
                }
 
        }
 

        
// 省略geter、serter方法 
}
 

dao层:
1public class SqlY_wjlxDao extends SqlMapClientDaoSupport implements IY_wjlxDao 
2
3        public List getAllY_wjlx(Y_wjlx y_wjlx) 
4                
5                return this.getSqlMapClientTemplate().queryForList("getAllY_wjlx", y_wjlx);                
6        }
 
7}
 
8

控制层:spring控制类实现分页
 1 public   class  Y_wjlxListAllController  extends  AbstractController  
 2
 3         Integer currentPage ; 
 4         
 5          // y_wjlx类继承BaseModel类 
 6         Y_wjlx y_wjlx; 
 7
 8         @Override 
 9          protected  ModelAndView handleRequestInternal(HttpServletRequest request, 
10                         HttpServletResponse response)  throws  Exception  
11                 String page  =  request.getParameter( " page " ); 
12                  if  (page  ==   null   ||  page.equals( " head " ))  
13                         currentPage = 1
14                         y_wjlx  =   new  Y_wjlx(currentPage); 
15                         request.getSession().setAttribute( " currentPage " , currentPage); 
16                 }
 
17                  if  ( " privious " .equals(page))  
18                         currentPage  =  (Integer) request.getSession().getAttribute( " currentPage " ); 
19                          if (currentPage > 1 ) currentPage  -=   1
20                         y_wjlx  =   new  Y_wjlx(currentPage); 
21                         request.getSession().setAttribute( " currentPage " , currentPage); 
22                 }
  else   if  ( " next " .equals(page))  
23                         currentPage  =  (Integer) request.getSession().getAttribute( " currentPage " ); 
24                         currentPage  +=   1
25                         y_wjlx  =   new  Y_wjlx(currentPage); 
26                         request.getSession().setAttribute( " currentPage " , currentPage); 
27                 }
 
28                 List list  =   this .drv_Manager.getAllY_wjlx(y_wjlx); 
29                  return   new  ModelAndView( " y_wjlxList " " list " , list); 
30         }
 
31
32          private  IDrv_Manager drv_Manager; 
33
34          public   void  setDrv_Manager(IDrv_Manager drv_Manager)  
35                  this .drv_Manager  =  drv_Manager; 
36         }
 
37 }

jsp页面分页调用
1 < button  onclick ="location.href  =  'y_wjlxList.shtml?page=head'" > 首&&页 button >     
2 && 
3 < button  onclick ="location.href  =  'y_wjlxList.shtml?page=privious'" > 上一页 button >     
4 && 
5 < button    onclick ="location.href='y_wjlxList.shtml?page=next'" > 下一页 button >

实现了分页,而且前面的数据查询翻页效率很高,但是越到后面越慢(这个好象是没有办法的)

现在的问题是:
1、spring控制类太累赘,好象做了它不该做的事情,翻页控制有没有比较好的办法抽到服务层?
2、翻页也只有:首页、上页、下页;想把最后一页也弄出来,但是担心效率太低,首先要统计数据总数,还有就是三层子查询到了几千万数据后效率就慢了。
有没有比较好的解决办法?

引用:http://www.blogjava.net/ctguzhupan/archive/2006/08/30/66580.aspx

分享到:
评论

相关推荐

    spring+ibatis+oracle分页缓存源码

    总的来说,"spring+ibatis+oracle分页缓存源码"项目展示了如何在Spring管理的环境中,利用iBatis和Oracle数据库实现高效的数据分页和缓存策略。通过理解和实践这些技术,开发者可以构建出更加健壮、响应快速的Web...

    struts2+spring+ibatis+oracle+分页搜索+上传附件实例

    综上所述,这个实例展示了如何整合Struts2、Spring、iBatis和Oracle来构建一个完整的Web应用,实现了动态分页搜索和附件上传功能。这种架构具有良好的可扩展性和可维护性,适用于各种中大型企业级项目。开发者可以...

    ssi_struts2_spring_ibatis 增删改查分页

    标题中的"ssi_struts2_spring_ibatis"指的是一个基于Java技术栈的Web应用程序开发框架组合,主要包括Struts2、Spring和iBatis。这三个组件是企业级Java应用中的常见选择,它们各自承担着不同的职责。 1. **Struts2*...

    spring mvc+ibatis+spring注解

    在Ibatis中,可以通过动态SQL来实现排序(ORDER BY)和分页(LIMIT 或 ROWNUM),而在控制器层,Spring MVC 可以处理请求参数,传递分页和排序条件到服务层,从而返回对应的查询结果。 "新增、修改、删除"是CRUD...

    struts1.2+batis+spring2.0+oracle10g集成例子(增加了分页功能)

    这是一个基于老旧技术栈的Web应用集成示例,主要包括Struts1.2、iBatis(现为MyBatis)和Spring2.0框架,以及Oracle10g数据库。这个项目可能是一个初学者为了学习和实践这些技术而创建的,特别加入了分页功能,以...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页.doc

    在传统的iBatis框架中,分页通常采用逻辑分页的方式,即通过游标(ResultSet)来逐条处理数据,从而实现分页效果。这种方式虽然跨数据库兼容性好,但性能上不如数据库原生的物理分页高效。物理分页是直接在SQL语句中...

    SSI框架搭建增删改查以及分页

    SSI框架,即Struts2、Spring和Ibatis的集成,是一种常见的Java Web开发技术栈,用于构建高效、灵活的企业级应用程序。在这个项目中,我们将会深入探讨如何利用这些技术实现数据库的增删改查(CRUD)操作以及分页功能...

    Spring2_struts2_ibatis框架整合(ssi框架搭建)

    这个源码是在MyEclipse+tomcat6.0环境下根据spring2.5+struts2+ibatis架构,数据库用的是Oracle,连接池用的是c3p0。因看到有些上传的资料让下载者不能够运行和使用,所以我自己用Oracle中自带的emp、dept还有一个...

    ibatis 例子

    此外,Oracle的游标、分页、序列等特性也可以方便地在`ibatis`中使用。 10. **最佳实践** 在实际应用中,应遵循良好的设计原则,如贫血模型和充血模型的选择,避免过多的嵌套SQL,合理使用缓存,以及充分利用...

    springboot-pagehelper-druid.rar springboot分页框架搭建 连接池搭建

    在本文中,我们将深入探讨如何使用SpringBoot框架与Druid连接池和PageHelper分页插件进行集成,以及如何在MySQL数据库环境下实现MyBatis的高效分页查询。虽然提供的描述提到使用Oracle数据库,但考虑到MySQL是更常见...

    SSI+ORACL(源码)

    描述中的"Spring+Ibatis+Struts2 ORACLE实现分页 返回json格式(源码)"进一步明确了项目的关键特性。这里提到的Spring是一个全面的Java企业级应用框架,提供了依赖注入、AOP(面向切面编程)等功能,用于简化开发。...

    一个S2S+ibatis一个增删改查的例子(由SSH2例子改编)

    关于struts2.0+spring+ibatis框架的一个增删改查及分页和排序 数据库:sqlserver 2000 服务器:tomcat 如果是oracle的只需修改Spring配置文件的 驱动 及 数据库对应的表即可

    扩展 iBatis 以透明支持多种数据库

    例如,MySQL 和 Oracle 在语法上有差异,如分页查询、日期处理等。通过创建和注册新的方言类,可以确保 SQL 能够正确地在不同数据库上执行。 2. **数据源配置**:为了支持多种数据库,需要在 iBatis 的配置文件中...

    mybatis自定义分页

    SpringMVC和Spring则作为控制层和依赖注入框架,共同构建了一个强大的后端系统。在大型项目中,为了提高性能和用户体验,分页显示数据是必不可少的功能。本篇将深入探讨如何在MyBatis中实现自定义分页,并结合...

    图书管理系统EXT+ibatis

    可能还有Hibernate作为另一层ORM选择,或者MyBatis-Spring整合包来更好地集成ibatis和Spring。在服务器端,可能采用Tomcat、Jetty等应用服务器运行Java Web应用,而在数据库层面,可能会使用MySQL、Oracle或...

    淘淘商城分页jar包

    3. **兼容性好**:PageHelper与Spring Boot、Spring MVC、MyBatis等框架集成良好,同时兼容MyBatis的各种方言,包括MySQL、Oracle、DB2、SQLite等。 4. **性能优化**:PageHelper采用了物理分页的方式,避免了全表...

    springmybatis

    mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis ...

    酒店客房管理系统(毕业设计) struts + spring + ibaits2.0

    这个系统利用了MVC(Model-View-Controller)架构模式,其中Struts作为控制器层,Spring作为业务逻辑层,而iBatis2.0作为数据访问层。以下是对各个技术组件的详细说明: 1. **Struts**:Struts 是一个基于MVC设计...

    dms.rar_easyui java_easyui-datagrid_jeasyui ibatis_jquery-easyui

    描述中提到,这个项目实现了用户管理和权限管理功能,这通常涉及到身份验证和授权机制,如Spring Security或Apache Shiro。"ACCES"可能是误打,可能是指Access数据库,但考虑到数据来源是Oracle数据库,这可能是指...

    spirngmvc+ext+ibatis

    本人用ibatis 和spring mvc +ext 做的一个完整的增删改查例子,如果有需要的请将代码下载下来,代码量不大,相信都会看得懂!在此共享!包括里面 有一张数据表(oracle),就两个字段。谢谢 (唯一的缺点就是分页我...

Global site tag (gtag.js) - Google Analytics