分享

ibatis简单分页

 心比雪凉 2010-08-14
1.ibetis分页实现步骤
a. 创建Page类。
b.创建bean类,并继承Page类。
b. 在dao层,定义两个方法。并实现该方法。
c. 在业务层,同样定义两个方法。并实现它。
d. 在配置文件中注入有关的page类。并设置相应的get和set方法。
e. 在action中调用有关的方法。
f.进行配置文件的设置。
详细步骤:
1.        Page类
package com.exeerp.sm.bean;
public class Page
{
        private int pagesize;//单页记录
        private int currentpage = 1;//当前页面
        private int countdate;//总记录数
        private int lastPage;
        private int nextPage;
        private int countPage;
        public int getCurrentpage()
        {
                return currentpage;
        }
        public void setCurrentpage(int currentpage)
        {
               
                if(currentpage>getCountpage())
                {
                        this.currentpage = getCountpage();
                }else {
                        if(currentpage < 1)
                        {
                                this.currentpage = 1;
                        }
                        else
                        {
                                this.currentpage = currentpage;
                        }
                }
        }
        public int getPagesize() {
                return pagesize;
        }
        public void setPagesize(int pagesize) {
                this.pagesize = pagesize;
        }
        public int getCountdate()
        {
                return countdate;
        }
        public void setCountdate(int countdate)
        {
                this.countdate = countdate;
        }
        //由记录数设定有关的页面数。
        public int getCountpage()
        {
                int i = this.countdate / this.pagesize;
                if((this.countdate % this.pagesize)!=0)
                {
                        i+=1;
                }
                return i;
        }
        public int getLastPage()
        {
                return this.getCurrentpage()-1;
        }
        public int getNextPage()
        {       
                return this.getCurrentpage()+1;
        }
        //给ibatis用数据
        public int getCurrent()
        {
                return (this.currentpage-1)*pagesize;
        }
        public int getNext() {
                return this.currentpage*pagesize;
        }
        public int getCountPage() {
                return countPage;
        }
        public void setCountPage(int countPage) {
                this.countPage = countPage;
        }
        public void setLastPage(int lastPage) {
                this.lastPage = lastPage;
        }
        public void setNextPage(int nextPage) {
                this.nextPage = nextPage;
        }

}
2.        创建bean类,并继承Page类
  package com.exeerp.sm.bean;
import com.exeerp.sm.bean.Page;
import java.util.*;
/**
* 实体类 审批流程信息描述
* @author 孙启华
* @date 2009-4-20
*/
public class Flow extends Page
{
   //审批编号
   private String flowId;
   //审批名称
   private String flowName;
   //审批路径
    private String flowUrl;
    //审批描述
   private String flowClass;
public String getFlowId() {
        return flowId;
}
public void setFlowId(String flowId) {
        this.flowId = flowId;
}
public String getFlowName() {
        return flowName;
}
public void setFlowName(String flowName) {
        this.flowName = flowName;
}
public String getFlowUrl() {
        return flowUrl;
}
public void setFlowUrl(String flowUrl) {
        this.flowUrl = flowUrl;
}
public String getFlowClass() {
        return flowClass;
}
public void setFlowClass(String flowClass) {
        this.flowClass = flowClass;
}



   
}


3.在dao层,定义两个方法,并实现该方法
  dao层接口
package com.exeerp.sm.dao;
import java.util.List;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.sm.bean.Flow;;
public interface FlowDAO
{
        public List getPageList(Object obj)throws BizException, DaoException;
        public int getCountSize(Object obj)throws BizException, DaoException;

}
  dao层接口实现
package com.exeerp.sm.dao.impl;
import java.util.*;
import com.exeerp.sm.bean.Flow;
import com.exeerp.sm.dao.FlowDAO;
import com.exeerp.pub.dao.AbstractBaseDAO;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
/**
* 审批流程管理数据持久层实现
* @author:孙启华
* @date:(2009-04-09)
*/
public class FlowDAOImpl extends AbstractBaseDAO implements FlowDAO
{
  public List getPageList(Object obj)throws BizException, DaoException
        {
                return this.getSqlMapClientTemplate().queryForList("select-Flow", obj);
        }
        public int getCountSize(Object obj)throws BizException, DaoException
        {
               
                return  (Integer)this.getSqlMapClientTemplate().queryForObject("selectcountsize-Flow");
        }
}


4.在业务层,同样定义两个方法。并实现它。
package com.exeerp.sm.biz;
import java.util.List;
import com.exeerp.sm.bean.Flow;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
/**
* 业务层接口 审批流程信息接口
* @author 孙启华
* @date 2009-4-20
*/
public interface FlowManager
{

         public List<Flow> findAll(Object obj)throws BizException,DaoException,Exception;
         public int getCountSize(Object obj)throws BizException,DaoException;
}
业务层实现类
package com.exeerp.sm.biz.impl;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.BeanFactory;
org.springframework.context.support.ClassPathXmlApplicationContext;
import com.exeerp.sm.dao.*;
import com.exeerp.sm.bean.Flow;
import com.exeerp.sm.biz.*;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.pub.util.ExceptionMessage;
import java.util.*;
/**
* 审批环节管理业务逻辑层实现
* @author 孙启华
* 创建时间:(2009-04-20)
*/
public class FlowManagerImpl implements FlowManager
{
        static Logger logger = Logger.getLogger(FlowManagerImpl.class);
        private FlowDAO flowDao;

public int getCountSize(Object obj)throws BizException,DaoException
         {
                 return flowDao.getCountSize(obj);
         }
           public List<Flow> findAll(Object obj)throws BizException,DaoException,Exception
{
      List<Flow> all=new ArrayList();
                 try
                 {                       
                     //all=flowDao.findAll(obj);
                     all = flowDao.getPageList(obj);
                         if(all!=null)
                         {
                                 System.out.println("-----FlowManagerImpl.findAll()"+all);
                         }
                 }
                 catch(Exception ex)
                 {
                         ex.printStackTrace();
                 
                 }
                 return all;
}
         
        public FlowDAO getFlowDao() {
                return flowDao;
        }
        public void setFlowDao(FlowDAO flowDao) {
                this.flowDao = flowDao;
        }
}



Action类:
package com.exeerp.sm.ctrl;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.exeerp.sm.biz.FlowManager;
import com.exeerp.sm.dao.*;
import com.exeerp.pub.action.BaseAction;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.pub.util.ExceptionMessage;
import com.exeerp.sm.bean.*;
import org.apache.struts2.ServletActionContext;//引出request对象
import java.io.*;
/**
* Action类 审批环节信息管理
* @author 孙启华
* @date 2009-4-21
*/
public class FlowManagerAction extends BaseAction
{
        //记录日志信息
        static Logger logger = Logger.getLogger(FlowManagerAction.class);
   //引用的业务层的对象,
        private FlowManager flowManager;//
        //引用审批的bean对象
    private Flow flow;
    private List<Flow> all;
    private final static int pagesize = 10;
        private int countdate;//总记录
        private Page page;//在action中注入该对象
    public List<Flow> getAll()
    {
                return all;
        }
        public void setAll(List<Flow> all)
        {
                this.all = all;
        }
    public FlowManager getFlowManager() {
                return flowManager;
        }
        public void setFlowManager(FlowManager flowManager) {
                this.flowManager = flowManager;
        }
        public Flow getFlow() {
                return flow;
        }
        public void setFlow(Flow flow) {
                this.flow = flow;
        }
        public int getCountdate() {
                return countdate;
        }
        public void setCountdate(int countdate) {
                this.countdate = countdate;
        }
        public Page getPage() {
                return page;
        }
        public void setPage(Page page) {
                this.page = page;
        }
        public static int getPagesize() {
                return pagesize;
        }
     /**
     * 显示所有的审批流程信息
     * @return String SUCCESS则查找成功,反之查找失败。
     * @throws Exception
     */
    public String findAll()throws Exception
    {
            String result=this.ERROR;
            try
            {   
                    //查询并获取该记录数
                    countdate = flowManager.getCountSize(new Flow());
                        flow.setPagesize(10);
                        flow.setCountdate(countdate);
                all=flowManager.findAll(flow);
                    if(all.size()>0)
                {
                        result=this.SUCCESS;
                  //保存查找的对象到request
                        ServletActionContext.getRequest().setAttribute("all",all);
                }
            }
            catch (BizException e)//进行业务层异常的捕获
                {
                    e.printStackTrace()
                    ;
                        logger.error(e.getMessage());
                        this.setMessage(e.getMessage());
             result ="error";
                  }
               catch (DaoException e) //进行数据访问层异常的捕获
                  {
                       e.printStackTrace();
                        logger.error(e.getMessage());
                        this.setMessage(e.getMessage());
                  }
                  catch (Exception e)//进行其他异常的捕获
                  {
                          e.printStackTrace();
                        logger.error(ExceptionMessage.getMessage("common.serverException"));
                        this.setMessage(e.getMessage());
                  }
                  finally
                  {
                         return result;
                  }
}

Spring的xml的配置:
<bean id="flow" class="com.exeerp.sm.bean.Flow"></bean>
<bean id="page" class="com.exeerp.sm.bean.Page"></bean>

        <bean id="app-FlowManagerAction" class="com.exeerp.sm.ctrl.FlowManagerAction" scope="prototype">
                <property name="flowManager" ref="flowManager"/>
                <property name="flow" ref="flow"/>
                <property name="page" ref="page"/>
        </bean>

Ibetis配置:
  <!-- 显示所有的审批信息 -->
  <select id="select-Flow" resultClass="hashmap" parameterClass="Flow">
     
                <![CDATA[
                select * from (
                        select ROWNUM r,t.* from (
                                select * from Pub_Flow ) t)
                        where r > #current# and r <= #next#
             ]]>
           <!-- 显示时只要修改对应的表名即可 -->
              <!-- 注:t代表select * from Pub_Flow的字符集
                    t.* 代表他t下的所有字符集
                    ROWNUM :  行数
                   current next起止页
                  

    -->
  </select>
           <select id="selectcountsize-Flow" resultClass="Integer">
                <![CDATA[  select count(*) from Pub_Flow ]]>
        </select>
   


   Main.jsp页面:
<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@page import="com.exeerp.sm.bean.Page"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www./TR/1999/REC-html401-19991224/loose.dtd">
<html xmlns="http://www./1999/xhtml">
        <head>
                <title>审批流程管理</title>
                <link href="css/style.css" rel="stylesheet"/>
<script language="JavaScript" type="text/javascript">

        function choice(who)//全选和反选
                {
                    var inputs=document.getElementsByName("check");
                    var selectedNum = 0;
                    for (var j=0;j<inputs.length;j++) //获取选中数量
                    {
                        if (inputs[j].checked == true) {selectedNum += 1;}
                    }
                    if (selectedNum = inputs.length) {who = 0;} //如果checkbox处于全部选中状态,则实现取消全选
                    if (who == 1) //全选
                    {
                        for (var i=0;i<inputs.length;i++)
                        {inputs.checked = true;}
                    }
                    else //反选
                    {
                        for (var i=0;i<inputs.length;i++)
                        {inputs.checked = !(inputs.checked);}        
                    }
                }
                function panduan()//在删除删除进行选中的判定
                {                    
                    var cked = false;
                    var inputs=document.getElementsByName("check");
                    var selectedNum = 0;
                    for (var j=0;j<inputs.length;j++) //获取选中数量
                    {
                        if (inputs[j].checked == true)
                        {
                          selectedNum += 1;
                        }
                    }
                if (selectedNum==0) {
                        alert("必须选择一个");
                        return false;
                }else{
                   if(confirm("您确定要删除"))
                   {
                     cked=true;
                    return true;
                   }else{
                     return false;
                   }
                  
                    }
            }
            function selOpenPage()//选择有关的页面数时,进行页面的跳转
        {
             var aa=document.getElementById("selpage").value;//获取选项的值
             document.location.href="findAllAction-Flow.action?flow.currentpage="+aa; //转向查询所有的action并传递值   
        }
</script>        </head>
               

        <body>
        <style>
  body{
    text-align:center;
  }

        .datatable{
        border:1px solid #d6dde6;
        border-collapse:collapse;
        }
        .datatable td{
        border:1px solid #d6dde6;
        text-align:right;
        padding:4px;
        }
       
        .datatable th{
        border:1px solid #828282;
                        background:#bcbcbc;
        font-weight:bold;
        text-align:left;
        padding:4px;
        }
        .datatable caption{
        font:bold 1.9em "Times New Roman",Times,serif;
        background:#b0c4de;
        color:333517;
        border:1px solid #78a367;
        }
       
        .datatable tr:hover, .datatable .highlight{
        background:#ffff00;
       
        }
        .altrow{
        background:#eefeef;
        color:#000000;
        }
</style>
        <%int i=1;%>
        你好
        <h3><a href="flowadd.jsp">新增审批流程信息</a></h3>
        <a href="../sm_flowstep/findAllAction-Flowstep.action?flowstep.currentpage=1">进入审批环节管理主页</a>
                <a href="../sm_flowstepemp/findAllAction-Flowstepemp.action?flowstepemp.currentpage=1">进入审批环节处理管理主页</a>
                                <a href="../sm_coderule/findAllAction-Coderule.action?coderule.currentpage=1">进入编码规则管理主页</a>
<s:form theme="simple" action="./deleteAction-Flow.action" onsubmit="return panduan()">
<table>
<tr height="20px" bgcolor="red">
   <td>选择<br></td>
   <td>序号<br></td>
   <td>审批编号<br></td>
   <td>审批名称<br></td>
   <td>审批路径<br></td>
    <td>审批描述<br></td>
   <td>修改<br></td>
   <td>添加审批环节<br></td>
  </tr>
  <s:if test="#request.all==null">
    <tr>
      <td>记录不存在!!!</td>
    </tr>
  </s:if>
   <s:iterator value="#request.all">
                   <tr onmouseover="this.style.backgroundColor='#cccccc'" onmouseout="this.style.backgroundColor=''">
                                                    <td><s:checkbox name="check" id="check"  fieldValue="%{FLOWID}" > </s:checkbox> <br></td>
                            <td><%=i++%></td>
                           <td><s:property value="FLOWID"/></td>
                           <td><s:property value="FLOWNAME"/></td>
                            <td><s:property value="FLOWURL"/></td>
                             <td><s:property value="FLOWCLASS"/></td>
                           <td><a href="findByIdAction-Flow.action?id=<s:property value="FLOWID"/>">修改</a><br></td>
                       <td><a href="../sm_flowstep/flowstepadd.jsp?id=<s:property value="FLOWID"/>">添加审批环节</a><br></td>
                  </tr>
        </s:iterator>
       
   <tr><td><s:submit value="删除" onclick="return panduan()"/></td>
    <td><s:if test="#request.flow.currentpage>1"><a href="findAllAction-Flow.action?flow.currentpage=1">首  页</a></s:if>
            <s:if test="#request.flow.currentpage>1"><a href="findAllAction-Flow.action?flow.countpage=<s:property value="flow.lastPage"/>">上一页</a></s:if>
            <s:if test="#request.flow.countpage>1 && #request.flow.currentpage<#request.flow.countpage"><a href="findAllAction-Flow.action?flow.currentpage=<s:property value="flow.nextPage"/>">下一页</a></s:if>
            <s:if test="#request.flow.currentpage<#request.flow.countpage"><a href="findAllAction-Flow.action?flow.currentpage=<s:property value="flow.countpage"/>">尾  页</a></s:if>
            <s:property value="flow.currentpage"/>/<s:property value="flow.countpage"/>
            </td>
            <td width="80px">
            共<s:property value='countdate'/>条数据</td>
            <%
           
            int maxPage=(Integer)request.getAttribute("flow.countpage");
            int cur=(Integer)request.getAttribute("flow.currentpage");
           
            %>
            <td>跳转到
            <select name="selpage" id="selpage" onChange="selOpenPage()">
                                        <%
                                            
                                                for (int x = 1; x <= maxPage; x++) {
                                        %>
                                        <option value="<%=x%>"
                                                <%=cur== x ? "selected"
                                                                : ""%>><%=x%></option>
                                        <%
                                                }
                                        %>
                                </select>               
                                页</td>
            <td><input type="button" value="全选/全不选"  onclick="choice(1)"/>|</td>
            <td><input type="button" value="反 选"  onclick="choice(0)"/></td>
   </tr>
</table>
</s:form>
</body>
</html>
<script language="javascript">
onload=function(){
    var rows=document.getElementsByTagName("tr");
    for(var i=1;i<rows.length;i++)
    {
        rows.index=i
        rows.className=(i%2==0)?"":"altrow"
        rows.onmouseover=function()
        {
            this.className="highlight";
        }
        rows.onmouseout=function()
        {
            this.className=this.index%2==0?"":"altrow";
        }
    }
}
</script>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多