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 ...
随机推荐
- Thinkphp5+PHPExcel实现批量上传表格数据功能
http://www.jb51.net/article/129262.htm 1.首先要下载PHPExcel放到vendor文件夹下,我的路径是:项目/vendor/PHPExcel/,把下载的PHP ...
- 织梦CMS安装分享插件
获取百度分享按钮织梦系统插件 点击下载:dedecms 5.* 插件 更新日期:2011.09.05 1.下载百度分享插件的织梦cms版本. 2.使用管理员账号登录您的站点后台管理中心,单击" ...
- 为什么alertView弹出后button会消失的问题
按option后会有提示:Do not use the label object to set the text color or the shadow color. Instead, use the ...
- Mybatis异常:java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean
问题描述: 一月 15, 2014 3:43:13 下午 org.springframework.context.support.AbstractApplicationContext prepareR ...
- log4j:ERROR Category option " 1 " not a decimal integer.错误解决
log4j.properties 的配置文件中: log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }: ...
- kafka学习
kafka名词解释和工作方式: Producer :消息生产者,就是向kafka broker发消息的客户端. Consumer :消息消费者,向kafka broker取消息的客户端 Topic : ...
- Python输出hello world(各行命令详解)
创建main.py文件并粘贴下面代码 点击右键运行Debug 'main'后,下方的Debug窗口会出现ImportError: No module named 'bottle'这样的提示,提示导入b ...
- Linux中的shell到底是什么
(引自:https://zhidao.baidu.com/question/557066905.html) [一] shell的含义: 首先shell的英文含义是"壳": 它是相对 ...
- awk之NR==FNR问题
NR,表示awk开始执行程序后所读取的数据行数. FNR,与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计. 下面看两个例子: 1,对于单个文件NR 和FNR 的 输出结果一样的 ...
- linux之cut命令简单用法
语法 cut [-bn] [file] cut [-c] [file] cut [-df] [file] 使用说明: cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出 ...