环境:idea+mysql
首先,既然是mysql,那肯定会用到limit,用这个分页的确很方便。
第一步,编写sql语句
<select id="selectImages" resultType="com.abc.entity.Image_examine">
SELECT
*
FROM
image
<where>
<if test="status!=null and status!=''">
status=#{status}
</if>
<if test="examine!=null and examine!=''">
AND examine=#{examine}
</if>
<if test="sex!=null and sex!=''">
AND sex=#{sex}
</if>
</where>
limit #{start},#{pageSize}
</select>
注意这里的参数,start是查询的第几页[start是从0开始],pageSize是每页显示的数据量
关于 当前页和下一页之间的规律关系,这里转载一篇博客,写的很详细。
第二步,编写controller
/**
* @param examine 审核状态
* @param gender 性别
* @param request
* @return
*/
@RequestMapping(method = RequestMethod.GET, value = "/avatar")
public String selectAvatar(Integer examine, Integer gender,
HttpServletRequest request, Integer status,
Integer currentPage) {
try {
currentPage = (currentPage==null?1:currentPage);
int total = image_examineService.getCount();
int pageNum = 0;
if(total%100==0){
pageNum = total/100;
}else {
pageNum = total/100 + 1;
}
System.out.println("currentPage:"+currentPage+"total:"+total+"pageNum:"+pageNum); List<Image_examine> list = imageService.selectImages(status, examine == null ? 3 : examine,
gender,(currentPage-1)*100,100);
request.setAttribute("list", list);
复制代码是不对滴,自己敲~
request.setAttribute("pageNum",pageNum);
request.setAttribute("currentPage",currentPage);
} catch (Exception e) {
e.printStackTrace();
}
return "image";
}
参数列表 第10行 只需要关注 currentpage,这个是从页面获取到的,我们需要以这个数值来计算上下页。
24行
(currentPage-1)*100,100 这个在我转载的博客中有解释,即 limit后面的两个参数
pageNum 意思是 数据一共多少页
14-20行是计算多少页,获取pageNum,计算方式很简单 select count(1) from xxx 第三步,编写页面参数
数据的遍历就不写了,直接写按钮
<div class="btn-set">
<a class="pre" href="${pageContext.request.contextPath}/xx/avatar?currentPage=${currentPage-1}">上一页</a>
当前第<span class="currentPage">${currentPage}</span>页,共<span class="total">${pageNum}</span>页
<a class="next" href="${pageContext.request.contextPath}/xx/avatar?currentPage=${currentPage+1}">下一页</a>
</div>
计算页数的加减,我推荐的做法是在页面计算,好处是controller只需要关心获取数据。
如果在controller加减,就得给controller发送一个标识,告诉它我要进行什么操作,不方便。
完事了~
麋鹿留在最后的话:不要过分依赖插件,即使人家插件再好用,毕竟是人家写的,掌握核心才能不做代码的搬运工。
SSM项目手动分页详解的更多相关文章
-
TortoiseGit学习系列之TortoiseGit基本操作拉取项目(图文详解)
前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解) TortoiseG ...
-
TortoiseGit学习系列之TortoiseGit基本操作修改提交项目(图文详解)
前面博客 TortoiseGit学习系列之TortoiseGit基本操作克隆项目(图文详解) TortoiseGit基本操作修改提交项目 项目克隆完成后(可以将克隆 clone 理解为 下载,检出 c ...
-
Git学习系列之Git基本操作拉取项目(图文详解)
前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...
-
Git学习系列之Git基本操作推送项目(图文详解)
前面博客 Git学习系列之Git基本操作提交项目(图文详解) 如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果 ...
-
Git学习系列之Git基本操作提交项目(图文详解)
前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...
-
Loadrunner手动关联详解
Loadrunner手动关联详解 一.关联的含义: 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到 ...
-
Angular-cli新建项目目录结构详解
Angular-cli新建项目目录结构详解 在上一篇博客中我们已经通过Angular CLI命令行工具创建出来一个全新的Angular项目,要想写项目,首先我们要先搞清楚项目的目录结构是怎样的,每个文 ...
-
vue-cli3.0 脚手架搭建项目的过程详解
1.安装vue-cli 3.0 ? 1 2 3 npm install -g @vue/cli # or yarn global add @vue/cli 安装成功后查看版本:vue -V(大写的V) ...
-
IntelliJ IDEA创建Maven+SSM+Tomcat+Git项目【全程详解】
记录一下整个创建项目的过程,其中包括: Maven 项目创建: SSM配置文件: Tomcat配置: Git配置: Git忽略文件Ignore配置: 图文讲解,通俗易懂,易上手. 一.创建Maven ...
随机推荐
-
[转]office 2016 4合1/3合1 专业版 增强版 精简绿色安装版
Office 2016是微软的一个庞大的办公软件集合,其中包括了Word.Excel.PowerPoint.OneNote.Outlook.Skype.Project.Visio以及Publisher ...
-
如何减少JS的全局变量污染
A,唯一变量 B,闭包
-
jquery.tmpl 用法(附上详细案例)
js的模板引擎就和服务端的差不多,都是更好更快的拼接html用于显示,我参考了文章:http://www.cnblogs.com/zhuzhiyuan/p/3510175.html tmpl常用标签 ...
-
【HDU】5247-找连续数(直接暴力)
ORZ,这道题想复杂了,原来直接暴力就能够了复杂度为 n * n * logn #include<cstdio> #include<set> #include<algor ...
-
(转)dedecms网页模板编写
网页模板就是templets中的htm文件,所以编写模板就是要编写html.这篇文章不是关于标签的具体使用,而是对网页模板的一些理解.包括基本的标签语法,封面模板,列表模板和文档模板的关系. 一 关于 ...
-
05-XML遍历递归显示到TreeView上(XDocument类)
1.XML文件(x1.xml): <?xml version="1.0" encoding="utf-8" ?> <itcast> &l ...
-
[置顶] ※数据结构※→☆线性表结构(queue)☆============优先队列 链式存储结构(queue priority list)(十二)
优先队列(priority queue) 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除.在优先队列中,元素被赋予优先级.当访问元素时,具有最高优先级的元素最先删除.优先队列具有 ...
-
计算rem
(function(doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? ' ...
-
RabbitMQ在特来电的深度应用
特来电是一个互联网公司,而且是技术领先的互联网公司.互联网公司的标配是什么?答案就是缓存+MQ.没错,您没看错,就是MQ--消息队列,我们今天要讨论的RabbitMQ就是消息队列中功能非常强大的一种. ...
-
bootstrap中的对话框-dialog
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...