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 ...
随机推荐
- ThreadLocal源码解析
主要用途 1)设计线程安全的类 2)存储无需共享的线程信息 设计思路 ThreadLocalMap原理 1)对象存储位置-->当前线程的ThreadLocalMap ThreadLocalMap ...
- tomcat流程原理解析
tomcat的启动是通过Bootstrap类的main方法(tomcat6开始也可以直接通过Catlina的main启动) Bootstrap的启动 Bootstrap的main方法先new了一个自己 ...
- 搜索技术---solr
solr 企业站内搜索技术选型 在一些大型门户网站.电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快.搜索结果按相关度排序.搜索内容格式 ...
- Word Ladder 2015年6月3日
Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformatio ...
- EntityFramework6.X 之DbContex
DbContext 数据库上下文DbContext是ObjectContext代表之一负责管理在运行时从数据库取数据.跟踪数据库的变更.对实体类映射到数据中持久化操作等,表示工作单元和存储库模式的组合 ...
- Ant + Jenkies +Tomcat 自动构建部署Web项目
前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境 ...
- JVM-7.Java内存模型与高效并发
更多内容参见<并发与同步>系列 一.引子 二.JMM 三.Java中的线程 四.线程安全 五.锁优化 一.引子 运算能力 摩尔定律:晶体管数量,代表的CPU的频率 Amdahl ...
- JavaSE教程-01初识Java
1.计算机的概念 软件+硬件 2.操作系统 Windows.Mac.Linux.Unix等 3.计算机编程语言 计算机语言是一种人与计算机沟通的媒介. 分类: 机器语言:都是基于二进制的方式,由0和1 ...
- jquery表单序列化
$(function(){ $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json" ...
- OSS web直传 ajax方式 上传图片、文件
部分js代码 send_request = function(){//这是从后台获取认证策略等信息. var htmlobj=$.ajax({url:root+"/service/polic ...