博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis的分页查询
阅读量:5360 次
发布时间:2019-06-15

本文共 7104 字,大约阅读时间需要 23 分钟。

示例1:查询业务员的联系记录

1.控制器代码(RelationController.java)

//分页列出联系记录    @RequestMapping(value="toPage/customerRecord")    public String listRelationRecord(Map map,String beginTime,String endTime,            String uname,Long curPage){        Map
map1 = new HashMap
(); if(beginTime!= null && !"".equals(beginTime)){ map1.put("beginTime",beginTime); } if(endTime != null && !"".equals(endTime)){ map1.put("endTime",endTime); } if(uname != null && !"".equals(uname)){ map1.put("uname","%"+uname+"%"); } if(curPage == null){ curPage=(long) 1; } Page page = relationService.getPageDataRecord(curPage, 4, map1); map.put("page", page); return "Relation/ListRelationRecord"; }

2.服务层代码(RelationService.java)

//分页列出联系记录    public Page getPageDataRecord(long curPage , long pageRows ,Map map){        return relationDaoImpl.getPageDataRecord(curPage, pageRows, map);    }

3.模型层代码(RelationDaoImpl.java)

/**     * 分页列出联系记录     * @param curPage 当前页     * @param pageRows 每页的行数     * @param map 传给mybatis的参数Map     * @return     */    public Page getPageDataRecord(long curPage , long pageRows ,Map map){        //初始化Page        Page page = new Page();                //获取联系记录的总记录数        long count = session.selectOne(Relation.class.getName()+".getCountRecord",map);                //获取总页数=(总记录数+每页的行数-1)/每页的行数。如:总记录数为24条,每页的行数为4条,则共有:(24+4-1)/4=6页        long allPage = (count+pageRows -1)/pageRows;                //设置当前页        if(curPage < 1)curPage = 1;//如果当前页小于1则设当前页为第1页        if(allPage > 0 && curPage > allPage ) curPage = allPage;//如果当前页大于总页数则设当前页为总页数(即尾页)                //将查询的开始记录偏移量、最大查询记录数放到map中        map.put("start", (curPage -1)* pageRows);//查询记录的偏移量=(当前页-1)*每页的行数。如当前页为2,则查询记录的偏移量为(2-1)*4=4        map.put("stop", pageRows);//最大查询数=每页的行数                //获取联系记录数据        List
dataList = session.selectList(Relation.class.getName()+".getDataListRecord",map); //设置page的当前页 page.setCurPage(curPage); //设置page的每页的行数 page.setPageRows(pageRows); //设置page的总页数 page.setPageNum(allPage); //设置page的数据 page.setDataList(dataList); //返回page return page; }

4.Mybatis的映射文件(Relation.xml)

4.1 获取联系记录的总记录数。即在getPageDataRecord方法中long count = session.selectOne(Relation.class.getName()+".getCountRecord",map);语句对应的xml文件中的SQL

4.2 获取联系记录数据。即在getPageDataRecord方法中List<Relation> dataList = session.selectList(Relation.class.getName()+".getDataListRecord",map);语句对应的xml文件中的SQL

说明:因为在控制器RelationController.java中有另一个分页方法,所以在模型层代码(RelationDaoImpl.java)中没有调用父类(BaseDaoImpl.java)的分页方法,下面贴一下此控制器中另一个分页方法——分页列出联系计划。

jsp代码:(ListRelationRecord.jsp)

page.jsp

首页
上一页
下一页
尾页 一共有【${page.pageNum}】页    当前第【${page.curPage}】页    <%-- 当前第
页 --%>

 

示例2:分页列出联系计划

1.控制器代码(RelationController.java)

//分页列出联系计划    @RequestMapping(value="toPage/customerPlan")    public String listRelation(Map map,String beginTime,String endTime,            String uname,Long curPage){        Map
map1 = new HashMap
(); if(beginTime!= null && !"".equals(beginTime)){ map1.put("beginTime",beginTime); } if(endTime != null && !"".equals(endTime)){ map1.put("endTime",endTime); } if(uname != null && !"".equals(uname)){ map1.put("uname","%"+uname+"%"); } if(curPage == null){ curPage=(long) 1; } Page page = relationService.getRePlanList(curPage, 4, map1); map.put("page", page); return "Relation/listRelation"; }

2.服务层代码(RelationService.java)

//分页列出联系计划    public Page getRePlanList(long curPage, long pageRows, Map map){        return relationDaoImpl.getRePlanList(curPage,pageRows,map);    }

3.模型层代码(RelationDaoImpl.java)

@Repositorypublic class RelationDaoImpl extends BaseDaoImpl
{ //分页列出联系计划 public Page getRePlanList(long curPage, long pageRows, Map map){ return super.getPageData(curPage, pageRows, map); } }

4.模型层代码(父类BaseDaoImpl.java)

public class BaseDaoImpl
{/** * 分页 * @param curPage 当前页 * @param pageRows 每页的条数 * @param map * @return */ public Page getPageData(long curPage , long pageRows ,Map map){ Page page = new Page(); long count = session.selectOne(clazz.getName()+".getCount",map);//获取数据的总条数 long allPage = (count+pageRows -1)/pageRows;//根据每页的行数+总条数获取总页数 //设置当前页 if(curPage < 1)curPage = 1;//如果当前页小于1则设当前页的值为1 if(allPage > 0 && curPage > allPage ) curPage = allPage;//如果当前页大于总页数则设当前页为总页数 map.put("start", (curPage -1)* pageRows);//设置查询的起始值 map.put("stop", pageRows);//设置返回的最大条数——即每页的行数 //获取数据 List
dataList = session.selectList(clazz.getName()+".getDataList",map); page.setCurPage(curPage);//当前页 page.setPageRows(pageRows);//每页的行数 page.setPageNum(allPage);//总页数 page.setDataList(dataList);//数据 return page; } }

5.Mybatis的映射文件(Relation.xml)

5.1 获取联系计划的总记录数。即在getPageData方法中 long count = session.selectOne(clazz.getName()+".getCount",map);语句对应的xml文件中的SQL

5.2获取联系计划的数据。即在getPageData方法中 List<T> dataList = session.selectList(clazz.getName()+".getDataList",map);语句对应的xml文件中的SQL

 

转载于:https://www.cnblogs.com/wql025/p/5003975.html

你可能感兴趣的文章
Linux常用命令(十七)
查看>>
Linux常用命令(十六)
查看>>
Linux常用命令(二十四)
查看>>
4种java定时器
查看>>
Vue.js 教程
查看>>
linux 设置网卡
查看>>
hive 语法 case when 语法
查看>>
Ajax:js读取txt内容(json格式内容)
查看>>
Task 7 买书最低价格问题
查看>>
Selenium3+python自动化007-警告框
查看>>
html5 相同形状的图形进行循环
查看>>
springboot中文官方文档
查看>>
ThreadLocal实现线程范围内共享
查看>>
多校HDU5723 最小生成树+dfs回溯
查看>>
ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页
查看>>
关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】
查看>>
关于Entity Framework中的Attached报错的完美解决方案终极版
查看>>
Selenium之Web页面滚动条滚操作
查看>>
组合数据类型练习,英文词频统计实例上
查看>>
Uber回馈开源的一些软件
查看>>