javaWeb手动分页步骤
一:编写实体类
@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手动分页步骤的更多相关文章
- Xamarin 手动安装步骤+破解
原文:Xamarin 手动安装步骤+破解 由于Xamarin运行的时候有很多依赖项,所以现在在官网上下载的XamarinInstall只是一个下载安装器,并不是软件包.它会自动下载安装所需的依赖软件, ...
- 使用TagHelper完成分页步骤
使用TagHelper完成分页步骤 转载 2016-08-23 11:37:33 1 创建一个MyPageOpion类,用来存储分页信息,比如当前页,栏目总数,页面大小,跳转地址(RouteUrl)等 ...
- 关于laravel 得手动分页问题
一般得分页,我们只需要使用paginate方法,就可以简单得搞定.但是遇到数组得组合情况呢?这个时候,就需要我们使用自定义分页了.首先我们看下laravel得分页方法源码: #vendor/larav ...
- 对一个结果集(List)进行手动分页
对一个链表List,进行手动分页,核心代码就是pagin函数: import lombok.extern.slf4j.Slf4j; import org.junit.Before; import or ...
- laravel带条件查询手动分页
后台php代码: //手动分页 $users = $kaoqin; //打算输出的数组,二维 $perPage = 10; if ($request->has('page')) { $curre ...
- laravel二维数组手动分页显示
示例:数组 $user 如下 $user: array (size=) 'sort' => array (size=) => float 0.028616622341171 => f ...
- Oracle 10g 数据库手动创建步骤
Oracle 数据库手动创建步骤 编写初始化参数文件 设置操作系统环境变量 创建实例 以管理员身份连接数据库 启动实例 create database 创建数据库 运行数据字典脚本 Oracle的网络 ...
- Laravel 手动分页实现
Laravel 手动分页实现 基于5.2版本 在开发过程中有这么一种情况,你请求Java api获取信息,由于信息较多,需要分页显示.Laravel官方提供了一个简单的方式paginate($perP ...
- java手动分页处理
经常我们在操作数据库的时候都会用到分页,而且很多框架也提供了分页功能,像PageHelper. 但是在有些项目中,需要将数据查询出来进行手动分页,那么原理是什么呢? 其实很简单,首先需要知道数据总量, ...
随机推荐
- 3. css百度制作字体图片
http://fontstore.baidu.com/static/editor/index.html?qq-pf-to=pcqq.group
- selenium 执行js代码
获取一个input输入框的值: JavascriptExecutor js =(JavascriptExecutor) driver; merchatName=js.executeScript(&qu ...
- Android 开发技术周报 Issue#277
新闻 Android 11界面再调整:加入快速截屏.多任务向国产ROM看齐 最新版Android 11推送 谷歌Pixel 5被曝光:支持反向充电 4月Android系统版本分布:8.0 Oreo最主
- 使用 Python 控制自己的电脑和键盘是一种什么样的体验?python学习的正确姿势
可能有时候你需要在电脑做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己爱干嘛干嘛去,有点 “按键精灵” 的意思,是不是感觉有点爽呢? 那么 ...
- Selenium常见报错问题(3)- 解决和分析NoSuchElementException
如果你在跑selenium脚本时,需要某些异常不知道怎么解决时,可以看看这一系列的文章,看看有没有你需要的答案 https://www.cnblogs.com/poloyy/category/1749 ...
- QString 转换成 wchar 的一个小陷阱
QString::toWCharArray(wchar_t * array) 其中 wchar_t * array 除了要分配内存之外,必须用 wmemset 初始化. 环境是 Visual Stud ...
- Jetson AGX Xavier刷机
1. 准备一台电脑做主机(host),运行Ubuntu系统,我用的是虚拟机,运行的是Ubuntu 18.04系统. 2. 主机更换apt-get源,参见https://www.cnblogs.com/ ...
- if __name__ == '__main__'到底是什么?
引子 要搞清楚这个问题,可以先听一个故事~~~ 像我们做事一样,都需要一个起始点,终点存在与否无关紧要.编程也是一样,任何程序都有一个入口,在所谓的静态编译语言中,如Java的入口是一个名字叫做Mai ...
- 利用POI工具读取word文档并将数据存储到sqlserver数据库中
今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...
- Nginx比SRS做得好的地方
在nginx.org文档中,摘录了一篇nginx介绍的文章,Chapter “nginx” in “The Architecture of Open Source Applications”,这篇文章 ...