hinernate 分页

分页,向前台json传值工具类:

package com.xshcar.carcloud.util;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
 * 基类
 * @author Administrator
 *
 */
public class BaseAction extends ActionSupport{

     private Integer startpage; //开始页
     private Integer endpage;//结尾页
     private Integer topage;//总页数
     protected Integer count;
     private final int SHOWPAGE = 10;//当前分页显示条数
     private Integer pagenum;
     private Integer pagesize;
     private SimpleDateFormat baseFormat=new SimpleDateFormat("yyyy-MM-dd");

    public void paginationTools(Integer pagenum,Integer pagesize){
        this.pagenum=pagenum;
        this.pagesize=pagesize;

        topage= this.count%pagesize==0?count/pagesize:count/pagesize+1;

        if (topage < SHOWPAGE) {
               /** if中是总页数小于SHOWPAGES的情况 */
               this.startpage = 1;
               this.endpage = topage;
          } else {
               /** else中是总页数大于SHOWPAGES的情况 */
               if (pagenum <= SHOWPAGE / 2 + 1) {
                    this.startpage = 1;
                    this.endpage = SHOWPAGE;
               } else {
                    this.startpage = pagenum - (SHOWPAGE / 2);
                    this.endpage =pagenum + (SHOWPAGE / 2 - 1);
                    if (this.endpage >= topage) {
                         this.endpage = topage;
                         this.startpage = topage - SHOWPAGE + 1;
                    }
               }
          }
    }

    /**
     * 向前台传值方法
     * @return
     * @throws IOException
     */
    public void writeJsonToJsp(String msg) throws IOException{
        HttpServletResponse response = ServletActionContext.getResponse();
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter pw = response.getWriter();
        pw.write(msg);
        pw.flush();
        pw.close();
    }

    /**
     * 时间转换 相加
     * @param time 要转换的时间
     * @param type 1.小时,2.月份,3.年份
     * @param count 数量,加多少或者减多少
     * @return
     */
    public String convertDates(Date time,Integer count,Integer type){
        String date="";
        try {
            Calendar cc = Calendar.getInstance();
            cc.setTime(time);//2015-06-02
            if(type==1){//小时
                cc.add(Calendar.DAY_OF_MONTH, count);
            }else if(type==2){//月份
                cc.add(Calendar.MONTH, count);
            }else if(type==3){//年份
                cc.add(Calendar.YEAR, count);
            }
            date=baseFormat.format(cc.getTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return date;
    }

    public Integer getStartpage() {
        return startpage;
    }

    public void setStartpage(Integer startpage) {
        this.startpage = startpage;
    }

    public Integer getEndpage() {
        return endpage;
    }

    public void setEndpage(Integer endpage) {
        this.endpage = endpage;
    }

    public Integer getTopage() {
        return topage;
    }

    public void setTopage(Integer topage) {
        this.topage = topage;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

}

action:

    //pagenum,pagesize在action中定义为常量eg: private Integer pagenum = 1;    并生成get/set方法    pagenum代表当前页,pagesize代表每页显示条数

    public String gettcoutoFunctionList(){
            try {
                if(!"".equals(tctofName) && tctofName!=null){
                    tctofName=tctofName.trim();
                }
                List tcoutoFunctionList=tcouponsTofunctionService.gettcoutoFunction(tctofName, pagenum, pagesize);
                this.count=tcouponsTofunctionService.gettcoutoFunctionCount(tctofName);
                paginationTools(pagenum, pagesize);
                request.put("tcoutoFunctionList",tcoutoFunctionList);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "tcoutoFunctionList";

    }

daoImpl:

    public List gettcoutoFunction(String tctof_name,Integer pagenum,Integer pagesize) throws Exception {
        String sql="select tcft.tcft_name,tc.*,ct.S_FullName from t_couponsTofunction  tc inner join carshop_tbl ct on tc.s_id=ct.s_id";
           sql+=" inner join t_coupons_function_type tcft on tcft.tcft_id=tc.tcft_id ";
           sql+=" and tc.tctof_status=0 ";
        if(!"".equals(tctof_name) && tctof_name!=null){
            sql+=" and tctof_name like ‘%"+ tctof_name +"%‘ ";
        }
          sql+=" order by tctof_createtime desc ";
        Session session=getHibernateTemplate().getSessionFactory().getCurrentSession();
        Query query=session.createSQLQuery(sql);
        query.setFirstResult((pagenum-1)*pagesize);
        query.setMaxResults(pagesize);
        return query.list();

    }
     //数量查询
    public Integer gettcoutoFunctionCount(String tctof_name) throws Exception{
        String sql="select Count(*) from t_couponsTofunction  tc inner join carshop_tbl ct on tc.s_id=ct.s_id";
         sql+=" and tc.tctof_status=0 ";
        if(!"".equals(tctof_name) && tctof_name!=null){
            sql+=" and tctof_name like ‘%"+ tctof_name +"%‘ ";
        }
        Session session=getHibernateTemplate().getSessionFactory().getCurrentSession();
        Object obj=session.createSQLQuery(sql).uniqueResult();
        Integer num=Integer.parseInt(obj.toString());
        return num;
    }

页面引入文件:

<%@include file="/js/page.jsp" %>

引入的page.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<script type="text/javascript">
$(function(){
    /**
     * 分页封装
     * @longxiaoqiong
     */
    /*var startpage=1;
    var endpage=2;
    var pagenum=1;
    var topage=1;
    var count=16;*/
    var startpage=${startpage};
    var endpage=${endpage};
    var pagenum=${pagenum};
    var topage=${topage};
    var count=${count};
    var page="<div class=‘page‘ style=‘right:0;‘ id=‘page‘>";
        page+="<ul>";
        page+="<li class=‘back1‘ onclick=‘gopage(1)‘></li>";
        if(pagenum==startpage){
            page+="<li class=‘back‘ onclick=‘gopage("+pagenum+")‘></li>";
        }else{
            page+="<li class=‘back‘ onclick=‘gopage("+(pagenum-1)+")‘></li>";
        }

        for(var i=startpage;i<=endpage;i++){
            if(i==pagenum){
                page+="<li class=‘NoSelect‘>"+i+"</li>";
            }else{
                page+="<li class=‘No‘><a href=‘javascript:void(0);‘ onclick=‘gopage("+i+")‘>"+i+"</a></li>";
            }
        }
        if(pagenum==endpage){
            page+="<li class=‘next‘ onclick=‘gopage("+(pagenum)+")‘>&nbsp;</li>";
        }else{
            page+="<li class=‘next‘ onclick=‘gopage("+(pagenum+1)+")‘>&nbsp;</li>";
        }
        page+="<li class=‘next1‘ onclick=‘gopage("+topage+")‘>&nbsp;</li>&nbsp;";
        page+="<li class=‘zhuan_page‘>当前:<font color=‘red‘>"+pagenum+"</font>/"+topage+"</li>";
        page+="<li class=‘zhuan_page‘>&nbsp;总数:"+count+"</li><input type=‘hidden‘ name=‘pagenum‘ id=‘pagenum‘ value=‘1‘>";
        page+="</ul></div>";
        if(topage!=0){
            document.getElementById("divpage").innerHTML=page;
        }
});
function gopage(pagenum){
    document.getElementById("pagenum").value=pagenum;
    document.getElementById("pageform").submit();
}
</script>
时间: 2024-08-01 18:17:55

hinernate 分页的相关文章

python__Django 分页

自定义分页的类: #!/usr/bin/env python # -*- coding: utf-8 -*- # Created by Mona on 2017/9/20 from django.utils.safestring import mark_safe class Paginator: ''' 页码的格式依赖于bootstrap: 使用案例: from django.shortcuts import render,redirect,HttpResponse from app01.mod

ajax+分页

<!DOCTYPE html><html><head lang="zh-cn"><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><meta http-equiv="X-UA-Compat

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

优化LIMIT分页

在系统中需要分页的操作通常会使用limit加上偏移量的方法实现,同时加上合适的order by 子句.如果有对应的索引,通常效率会不错,否则MySQL需要做大量的文件排序操作. 一个非常令人头疼问题就是当偏移量非常大的时候,例如可能是limit 10000,20这样的查询,这是mysql需要查询10020条然后只返回最后20条,前面的10000条记录都将被舍弃,这样的代价很高.如果所有的页面被访问的频率相同,那么这样的查询平均需要访问半个表的数据.要优化这样的查询,要么实在页面中限制分页的数量,

Ajax实现无刷新分页

注:本文中使用到的一些类库在前面文章都能找到源代码,我会在文中指明链接所在,为了缩短文章篇幅,由此带来的阅读不便,敬请谅解. 本文讲解 Ajax 实现无刷新分页.实现原理.代码展示.代码下载. 这里需要说明一些知识: 1.Ajax 无刷新页面的好处:提供良好的客户体验,通过 Ajax 在后台从数据库中取得数据并展示,取缔了等待加载页面而出现的空白状态: 2.那么,Ajax 无刷新页面是运行在动态页面(.PHP)?还是静态页面(.html/.htm/.shtml)?答案是:静态页面: 3.实现原理

关于分页SQL的小总结

findPage 和findPageTotal条件分页中的条件 较为复杂点的关联查询 有取别名的 <select id="findPage" resultMap="MinOrderInfo" parameterType="map"> SELECT o.*,w.name buyName,w.MOBILE buyMobile,aa.name sellName,aa.MOBILE sellMobile,rs.CAR_BRAND_NAME c

webform:分页组合查询

一个简单的分页组合查询页面 /// <summary> /// 查询方法 /// </summary> /// <param name="tsql">SQL语句</param> /// <param name="hh">哈希表</param> /// <returns></returns> public List<Goods> Select(string un

TODO:数据库优化之分页

本文的例子是以MongoDB数据库为准,其它数据库各位也可以举一反三进行优化. 在MongoDB中分页使用 a.skip(n)跳过前n个匹配的文档: b.limit(m)返回m个结果,要是匹配的结果不到m个,则返回匹配数据量的结果,m是指定上限数量,而不是下限数量: c.sort({"name": 1,"address":-1}),1表示升序,-1表示降序. 使用skip跳过少量的文档还可以.但是数据量非常多的话,skip就会变得非常慢,每个数据库都会有这种情况,所

WebForm 分页与组合查询

1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> list = new List<Subject>(); cmd.CommandText = "select *from Subject where SubjectName like @a "; cmd.Parameters.Clear(); cmd.Parameters.Add