一:编写实体类
@Setter
@Getter
@ToString
@Entity
@Repository
public class PageBean<T> {
private Integer currPage;//当前页
private Integer pageSize;//每页条数
private Integer totalCount;//总条数
private Integer totalPage;//总页数
private List<T> list;//当前页数据
}
二:编写dao层,写sql语句(mysql)
//查询总条数
@Select("select count(1) from product")
public Integer findByTotalCount(); //分页查询
@Select("select * from (SELECT *,(@rowNum:=@rowNum+1) as rowNo FROM product,(Select (@rowNum :=0) ) b) " +
"res where rowNo>=#{param1} and rowNo<=#{param2}")
List<Product> findByProduct(Integer start,Integer end);
三:编写service层以及实现类
1、service层
public PageBean<Product> findByProduct(Integer currPage, Integer pageSize);
2、实现类
@Override
public PageBean<Product> findByProduct(Integer currPage, Integer pageSize) {
//1、创建PageBean对象
PageBean<Product> pageBean = new PageBean<>();
//2、获取当前页面(页面传参过来)
pageBean.setCurrPage(currPage);
//3、每页条数
pageBean.setPageSize(pageSize);
//4、总条数
Integer totalCount = productDao.findByTotalCount();
pageBean.setTotalCount(totalCount);
//5、总页数
double ceil = Math.ceil(totalCount * 1.0 / pageSize);
pageBean.setTotalPage((int) ceil);
//6、当前页面数据,从数据库查询
int start = pageSize * (currPage - 1) + 1;
int end = pageSize * currPage;
List<Product> productList = productDao.findByProduct(start, end);
pageBean.setList(productList);
return pageBean;
}
四、编写控制器
//分页查询
@RequestMapping("/findByProduct")
public ModelAndView findByProduct(@RequestParam(value = "currPage",required = false,defaultValue = "1") Integer currPage,
@RequestParam(value = "pagesSize",required = false,defaultValue = "5") Integer pageSize){
PageBean<Product> pageBean = new PageBean<>();
pageBean =productService.findByProduct(currPage, pageSize);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("pageBean",pageBean);
modelAndView.setViewName("product-list");
return modelAndView;
}
五、编写web网页文件
<div class="form-group form-inline">
总共${pageBean.totalPage}页,共${pageBean.totalCount} 条数据。 每页
<select class="form-control" id="pageSize" onchange="gotoPage(1)>
      <option value="2">2</option>
<option value="3">3</option>
<option value="5" selected="selected">5</option>
<option value="10">10</option>
</select> 条
</div>
<div class="box-tools pull-right">
<ul class="pagination">
<%--在超链接中访问js函数 必须添加前缀 javascript--%>
<li><a href="javascript:gotoPage(1)" aria-label="Previous">首页</a></li>
<li><a href="javascript:gotoPage(${pageBean.currPage-1})">上一页</a></li>
<c:forEach begin="1" end="${pageBean.totalPage}" var="i">
<li><a href="javascript:gotoPage(${i})">${i}</a></li>
</c:forEach>
<li><a href="javascript:gotoPage(${pageBean.currPage+1})">下一页</a></li>
<li><a href="javascript:gotoPage(${pageBean.totalPage})" aria-label="Next">尾页</a></li>
</ul>
</div>
<script type="text/javascript">
$("#pageSize option[value=${pageBean.pageSize}]").prop("selected","selected");
function gotoPage(currPage) {
// 获取每页显示条数
var pageSize = $("#pageSize").val();
if(currPage<1){
return;
}
if(currPage>${pageBean.totalPage}){
return;
}
location.href="${pageContext.request.contextPath}/product/findByProduct?currPage="+currPage+"&pageSize="+pageSize
;
}
</script>

javaWeb手动分页步骤的更多相关文章

  1. Xamarin 手动安装步骤+破解

    原文:Xamarin 手动安装步骤+破解 由于Xamarin运行的时候有很多依赖项,所以现在在官网上下载的XamarinInstall只是一个下载安装器,并不是软件包.它会自动下载安装所需的依赖软件, ...

  2. 使用TagHelper完成分页步骤

    使用TagHelper完成分页步骤 转载 2016-08-23 11:37:33 1 创建一个MyPageOpion类,用来存储分页信息,比如当前页,栏目总数,页面大小,跳转地址(RouteUrl)等 ...

  3. 关于laravel 得手动分页问题

    一般得分页,我们只需要使用paginate方法,就可以简单得搞定.但是遇到数组得组合情况呢?这个时候,就需要我们使用自定义分页了.首先我们看下laravel得分页方法源码: #vendor/larav ...

  4. 对一个结果集(List)进行手动分页

    对一个链表List,进行手动分页,核心代码就是pagin函数: import lombok.extern.slf4j.Slf4j; import org.junit.Before; import or ...

  5. laravel带条件查询手动分页

    后台php代码: //手动分页 $users = $kaoqin; //打算输出的数组,二维 $perPage = 10; if ($request->has('page')) { $curre ...

  6. laravel二维数组手动分页显示

    示例:数组 $user 如下 $user: array (size=) 'sort' => array (size=) => float 0.028616622341171 => f ...

  7. Oracle 10g 数据库手动创建步骤

    Oracle 数据库手动创建步骤 编写初始化参数文件 设置操作系统环境变量 创建实例 以管理员身份连接数据库 启动实例 create database 创建数据库 运行数据字典脚本 Oracle的网络 ...

  8. Laravel 手动分页实现

    Laravel 手动分页实现 基于5.2版本 在开发过程中有这么一种情况,你请求Java api获取信息,由于信息较多,需要分页显示.Laravel官方提供了一个简单的方式paginate($perP ...

  9. java手动分页处理

    经常我们在操作数据库的时候都会用到分页,而且很多框架也提供了分页功能,像PageHelper. 但是在有些项目中,需要将数据查询出来进行手动分页,那么原理是什么呢? 其实很简单,首先需要知道数据总量, ...

随机推荐

  1. Springboot:员工管理之删除员工及退出登录(十(9))

    springboot2.2.6 delete请求报错,降至2.1.11功能可用 原因未知 构建员工删除请求 com\springboot\controller\EmployeeController.j ...

  2. 模拟HTTP请求调用controller

    原文参考本人的简书:https://www.jianshu.com/p/0221edbe1598 MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller调用,这样 ...

  3. 只会Vue怎么开发小程序?vue和微信小程序的到底有哪些区别?

    写了vue项目和小程序,发现二者有许多相同之处,在此想总结一下二者的共同点和区别. 一.生命周期 先贴两张生命周期图对比下: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. v ...

  4. MySQL数据库缓存操作

    安装: 启动的话: -d:以后台的方式进行: -l:选择监听指定的ip服务地址:-m:给他分配多大的内存:-p:端口号默认的端口为11211的服务端口: 另一个: 安装:telnet 这个可以用来测试 ...

  5. Ansible Jinja2 模板使用

    Ansible Jinja2 模板使用.语法与使用案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: ...

  6. 2019-2020-1 20199326《Linux内核原理与分析》第九周作业

    进程的切换和系统的一般执行过程 中断 中断在本质上都是软件或者硬件发生了某种情形而通知处理器的行为,处理器进而停止正在运行的指令流(当前进程),对这些通知做出相应反应,即转去执行预定义的中断处理程序( ...

  7. 整整 Java 线程池

    为什么用线程池 用官方文档来说,线程池解决了两个问题: 一是在执行大量的异步任务时,因为线程池减少了任务开始前的准备工作,如频繁创建线程,启动线程等工作,提升了性能表现:二是提供了一种绑定资源和管理资 ...

  8. Python-四则运算-蔡晓晴,杜婷萱

    github链接:https://github.com/Amy-CC/Arithmetic-Operation 一.需求 1.使用-n 参数控制生成题目的个数 2.使用-r 参数控制题目中数值(自然数 ...

  9. Shiro(二):Spring-boot如何集成Shiro(上)

    这篇文章主要介绍了spring-boot是如何集成shiro的authentication流程的. 从shiro-spring-boot-web-starter说起 shiro-spring-boot ...

  10. python(面向对象-类封装调用)

    一.面对对象思想 (1)大家肯定听过 Python 中”一切皆对象“的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面 ...