ThreadLocal经典分页
package com.netease.live.admin.util; import com.netease.live.common.util.Constant; /**
*
* @author bjliuzezhou
* @description 使用threadLocal 封装分页所必需传的参数
* @date 2016年7月1日
*/
public class SystemContext {
//当前第几页
private static ThreadLocal<Integer> currentPage = new ThreadLocal<Integer>();
//总共的页数
private static ThreadLocal<Integer> totalPages = new ThreadLocal<Integer>();
//起始数据位置
private static ThreadLocal<Integer> offSet = new ThreadLocal<Integer>();
//总记录的条数
private static ThreadLocal<Integer> recordCount = new ThreadLocal<Integer>();
//每页显示数
private static ThreadLocal<Integer> pageSize = new ThreadLocal<Integer>(); /*
* currentPage :get、set、remove
*/
public static int getCurrentPage(){
Integer cp = currentPage.get();
if(cp == null){
return 0;
}
return cp;
} public static void setCurrentPage(int currentPage) { int validPage = currentPage > 0 ? currentPage : 1;
validPage = validPage < getTotalPages() ? validPage : getTotalPages();
SystemContext.currentPage.set(validPage); }
public static void removeCurrentPage(){
currentPage.remove();
} /*
* totalPages :get、set、remove
*/
public static int getTotalPages() {
Integer tp = totalPages.get();
if (tp == null) {
return 0;
}
return tp;
} public static void calTotalPages() { int totalPages = (getRecordCount() + getPageSize() -1) / getPageSize();
SystemContext.totalPages.set(totalPages);
} public static void removeTotalPages(){
totalPages.remove();
} /*
* offset :get、set、remove
*/
public static int getOffSet() {
Integer os =offSet.get();
if (os == null) {
return 0;
}
return os;
} public static void calOffSet() {
int offset = (getCurrentPage() - 1) * getPageSize();
int validOffSet = offset > 0 ? offset : 0;
SystemContext.offSet.set(validOffSet);
} public static void removeOffSet(){
offSet.remove();
} /*
* recordCount :get、set、remove
*/
public static int getRecordCount(){
Integer rc = recordCount.get();
if(rc == null){
return 0;
}
return rc;
} public static void setRecordCount(int recordCount) { SystemContext.recordCount.set(recordCount);
}
public static void removeRecordCount(){
recordCount.remove();
} /*
* pageSize :get、set、remove
*/
public static int getPageSize(){
Integer ps = pageSize.get();
if(ps == null){
return 0;
}
return ps;
} public static void setPageSize(int pageSize) { SystemContext.pageSize.set(pageSize);
}
public static void removePageSize(){
pageSize.remove();
} public static void PageFilter(int recordCount,int pageSize,int currentPage){
// 记录总条数
SystemContext.setRecordCount(recordCount);
SystemContext.setPageSize(Constant.PAGE_COUNT);
SystemContext.calTotalPages();
SystemContext.setCurrentPage(currentPage);
SystemContext.calOffSet();
}
}
通过pageFilter设置总页数,每页显示的条数,当前第几页,总记录条数,传入数据库时offset起始位置。
ThreadLocal经典分页的更多相关文章
- Oracle中经典分页代码!
在Oracle中因为没有top关键字,所以在sqlserver中的分页代码并不适用于Oracle,那么在Oracle中如何来实现分页呢? --查询所有数据 STUNO STUNAME STUAGE S ...
- php 经典分页(推荐和laypage配合)
学习地址:http://www.imooc.com/video/2463 <?php //(ps:推荐使用laypage整站式跳转来渲染分页按钮样式比较舒服http://laypage.layu ...
- php与oracle11g经典分页
<?php $t1 = xdebug_time_index(); $conn = oci_connect("SCOTT","TIGER","19 ...
- php动态分页类
<?php /** * 页面名称:cls_page.php */ class Page { private $each_disNums; //每页显示的条目数 private $nums; // ...
- MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...
- php分页类 可直接调用
<?php /** * 分页类 * @author xyy * 调用分页实例 $subPages=new SubPages(数据总条数);//实例化分页类 * //$subPages->s ...
- php 页面分页样式 示例
<?php class SubPages { private $each_disNums; //每页显示的条目数 private $nums; //总条目数 private $current_p ...
- 分页助手PageHelper学习
PageHelper是mybatis的通用分页插件,通过mybatis的拦截器实现分页功能,拦截sql查询请求,添加分页语句, 最终实现分页查询功能.在 springboot上集成pagehelper ...
- Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(一)
相关的maven的 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...
随机推荐
- zabbix常见问题整理 持续更新……
[toc] 1.zabbix仪表板错误 问题: zabbix server is not running: the information displayed may not be current 解 ...
- poj1847 Tram 最短路Dijkstra
题目链接:http://poj.org/problem?id=1847 Dijkstra算法的模版应用 题意:给你N个点和起点终点,点与点有铁路,接下来的N行分别为点i的情况 第一个数字表示与该点连通 ...
- hdu1150 Machine Schedule 经典二分匹配题目
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 很经典的二分题目 就是求最小点覆盖集 二分图最小点覆盖集=最大匹配数 代码: #include& ...
- Kafka学习-简介
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.S ...
- C#基础知识-编程思想之封装(七)
既然是学习面向对象的编程那自然要了解面向对象中的三大基石,封装.继承和多态. 我觉得要解释这三大基本概念用一篇文档很难解释清楚,想要具体形象的去了解,还是需要每一个概念用一个篇幅来说明,将封装.继承和 ...
- 基于TypeScript的FineUIMvc组件式开发(开头篇)
了解FineUIMvc的都知道,FineUIMvc中采用了大量的IFrame框架,对于IFrame的优缺点网上也有很多的讨论,这里我要说它的一个优点“有助于隔离代码逻辑”,这也是FineUIMvc官网 ...
- LeetCode Weekly Contest
链接:https://leetcode.com/contest/leetcode-weekly-contest-33/ A.Longest Harmonious Subsequence 思路:hash ...
- netsh & winsock & 对前端的影响
netsh 与 winsock 一个是window的脚本工具,另一个则是window是网络编程中要用到的网络接口,而非要说跟我小小的前端有什么影响,那还真有...,当然这个影响是很不好的,比如node ...
- Linux环境下配置JDK,java环境
1.查看Linux自带的JDK是否已安装 # java -version 2. 查看JDK信息 # rpm -qa | grep java 显示: java-x.x.x-gcj-compat-x.x. ...
- Java 命令后台运行jar包
nohup java -jar XX.jar >temp.text & nohup 客户端关闭,后台继续运行 & 客户端关闭,后台停止运行 temp.text 是存控制台文件 ...