两步轻松传统的分页功能
来源:互联网 发布:达芬奇密码的算法图解 编辑:程序博客网 时间:2024/06/07 12:43
业务背景:
现在的公司是创业型的公司,同时也是创新型的公司,很多功能都不是很全面.于是就不得不一遍做业务一边丰富某些基本的功能.前几天做了一个分页功能,虽然我封装的不是很好,但是个人感觉还很简单,如有需要的童鞋可以直接在这个基础上启发一下改造成自己的功能.而且如果有大神可以指出改进方案,感激不尽.
技术背景:
公司的持久层环境是mybatis,框架用的是SpringBoot.框架层次用的是简单的三层:Controller/service/dao,面向接口的restful编程风格
核心实现方式:
1.实体封装:
/** * <p>ClassName: PageModel * <p>Description: 分页实体封装 * <p>Author maqp * <p>Version V1.1 * <p>Date 2016/12/20 */@Datapublic class PageModel { private Integer pageSize;//每页大小(参数) private Integer recordSize;//总记录条数 private Integer currentPage;//当前显示页数(参数) private List<?> dataList;//每页数据
2.mybatis实现模板:
select * from( select ROW_NUMBER () OVER(order by detail_list_id ) as row_Num, * from (-----------------------------------这里是带分页的内容,外层是分页实现-----------------select * from tableName------------------------------------------------------------------------------------- )as t1 )as t2 where row_Num between #{start} and #{end}
<select id="findTotal" resultType="int"> select COUNT(*) from dispatch_material_detail_list </select>
第一个是用作查询固定页数的从第几条到第几条记录数,
第一个sql是为了求总的记录数,用来求一共多少页.
完整demo:
//Service层:部分核心代码
public PageModel showAll(int pageSize, int currentSize) { List<xxxDto> xxDtos=new ArrayList<>(); int start,end; start=(currentSize-1)*pageSize+1; end=currentSize*pageSize; List<xxxModel> listModels=xxDao.showAll(start,end);int totalRecords=xxDao.findTotal();if (listModels!=null &&!listModels.isEmpty()&&totalRecords>0){ PageModel pageModel=new PageModel(); pageModel.setCurrentPage(currentSize); pageModel.setPageSize(pageSize); pageModel.setRecordSize(totalRecords);for (xxxModel xxModel :listModels){ xxxDto xxDto=new xxxtDto(); copyProperties(xxModel,xxDto); listDtos.add(xxDto); } pageModel.setDataList(xxDtos); return pageModel; } return null; }
其中的dao层的实现是用mybatis实现的,dao层的接口,很简单,就不做多说,不知道的可以Q我.以上是service层的实现,接口不做多说.下面是Controller层核心代码//Controller层核心代码@RequestMapping(value="/showAll",method=RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) public PageModel showAll(@RequestParam Integer pageSize, @RequestParam Integer currentPage){ if(pageSize==null || pageSize<=0){ pageSize=20; } if(currentPage==null || currentPage<=0){ currentPage=1; } PageModel pageModel=xxxService.showAll(pageSize,currentPage); if(pageModel!=null && pageModel.getRecordSize()>=1){ return pageModel; } return null; }
0 0
- 两步轻松传统的分页功能
- ....智能的列表分页,两行代码轻松实现....
- 用asp.net轻松打造功能完备的分页技术!!!!
- 用asp.net轻松打造功能完备的分页技术!!!!
- 用asp.net轻松打造功能完备的分页技术!!
- 用asp.net轻松打造功能完备的分页技术!!!!
- 两步轻松解决在VMware下面的linux不能使用U盘的问题
- 我们一起来探究—真分页,假分页 轻松实现分页的功能
- 两步轻松解除盗版Windows XP盗版警告
- 简单两步狙击ARP病毒,让你轻松上网
- 轻松两步搞定 Intelli Idea Tomcat 项目热部署
- [置顶] 两步轻松搞定 Apache 本地虚拟主机设置
- 一步两步-自己动手实现快速可用的jQuery分页插件-适合ajax请求
- 一个功能齐全的DataGrid分页例子(两种方法)
- 一个功能齐全的DataGrid分页例子(两种方法)
- 功能齐全的DataGrid分页例子(两种方法)
- android 简单的两步实现Play上的文本伸缩功能
- android 简单的两步实现Play上的文本伸缩功能
- SVN版本控制图标经常延时显示或未显示问题解决方法
- Jquery—获取和设置html内容和属性
- shiroShiro系列之Shiro+Spring MVC整合
- OKHttp 上手记录
- 记录一次ajax错误Provisional headers are shown
- 两步轻松传统的分页功能
- MySQL使用痕迹清理~/.mysql_history
- 用打印DIV方法实现简易网页打单
- 关于restful,rpc概念的区别
- apple支付相关
- Java设计模式之五——装饰模式
- Jquery便捷实现JavaScript的功能
- 【JZOJ 4931】A
- 赚钱的最好方法不是投资而是思考