热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mybatis分页查询避免两次查询同时返回总数和数据(一条SQL直接查询)

一、场景:mysql分页查询一般都需要给前端返回一个总数,便于前端人员计算总页数。以前的处理办法是查询两次数据库,现在想提升下效率。二

一、 场景:

mysql分页查询一般都需要给前端返回一个总数,便于前端人员计算总页数。以前的处理办法是查询两次数据库,现在想提升下效率。

二、处理方法:

SELECT SQL_CALC_FOUND_ROWS * FROM [table] WHERE ...... limit M, N;
SELECT FOUND_ROWS();

SQL_CALC_FOUND_ROWS 告诉MySQL将sql所处理的行数记录下来
FOUND_ROWS() 则取到了这个纪录。

三、controller层:

public Page PageAfter(PageModel page, PeopleQuery query) {List list = service.PageAfter(page.getP(),page.getPs(),query);List people = (List) list.get(0); //数据集合Integer total = ((List) list.get(1)).get(0); //总量Page page1 = new Page();page1.setTotal(total);page1.setRecords(people);page1.setCurrent(page.getP());page1.setSearchCount(true);page1.setSize(page.getPs());page1.setPages(total/page1.getSize());return page1;}

四、service层:

public List PageAfter(long p, long ps, PeopleQuery query) {return peopleMapper.PageAfter(p,ps,query);
}

五、mapper层:

List PageAfter(@Param("p") Long p,@Param("ps") Long ps, @Param("query") PeopleQuery query);

六、xml代码:



注意:在使用时须要在配置文件中,设置容许sql进行多语句执行:allowMultiQueries=true,在sql的url上加上这个配置就能够了
在这里插入图片描述


推荐阅读
author-avatar
mobiledu2502853473
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有