SSM项目手动分页详解
环境: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 ...
随机推荐
- visual studio 打开微软MVC3示例MvcMusicStore的详细修改方法
1.官方下载地址:http://mvcmusicstore.codeplex.com/ 2.直接打开项目后,引用中会有三个dll文件报错,分别是System.Web.MVC;System.Web.He ...
- 云计算之路-阿里云上:节点 CPU 波动引发 docker swarm 集群故障
非常抱歉,今天 10:05-10:20 左右,我们用阿里云服务器搭建的 docker swarm 集群又出现故障,又是因为突然的节点 CPU 波动. 受这次故障影响的站点有 闪存,博问,班级,园子,短 ...
- ip001
----------- <?phpheader('Content-type:text/html;charset=utf8');// <script type="text/java ...
- Codeforces 900D Unusual Sequences 容斥原理
题目链接:900D Unusual Sequences 题意: 给出两个数N,M.让你求数列(和为M,gcd为N)的个数. 题解: 首先,比较容易发现的是M%N如果不为零,那么一定不能构成这样的序列 ...
- SecurityException
摘录自http://www.cnblogs.com/haorenjie/archive/2012/09/12/2682655.html public boolean checkNetwork() { ...
- beetl 配置多视图解析器
如下配置,指定了三个视图解析器,一个用于beetl页面渲染,一个用于cms,采用了beetl技术,另外一个一些遗留的页面采用jsp <bean name="beetlConfig&qu ...
- excel去除空格
=SUBSTITUTE(Sheet1!A1," ","") 在sheet2中输入上述公式,然后再通过拖拽复制公式,即可以很快的将sheet1中的数据全部处理.
- Ios8之后, 定位的delegate不能触发的问题
if([CLLocationManager locationServicesEnabled]){ self.locationManage = [[[CLLocationManager alloc] i ...
- RequestParam\@ResponseBody
为什么不写 RequestParam 也能拿到参数 三种写法,test(String name), test(@RequestParam String name), test(@RequestPara ...
- Linux普通用户修改owner非本人文件为什么成功
关键字:错误提示:E45 已设定选项’readonly’(请加!强制执行) Linux对文件和目录有很好的权限管理,但今天遇到一个比较诡异的事情,普通用户对文件权限不可写,但可以强制保存该文件,这样就 ...