请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为啥要用两个查询SQL

https://img1.sycdn.imooc.com//szimg/5c3327f0000127e908150132.jpg

用下面的就可以了吧,先判断count有点多余吧?

正在回答 回答被采纳积分+3

1回答

Jimin 2019-01-07 19:12:07

你好,我猜想你应该没实际去写课程里的代码,或者没认真去想他的细节。我们一起来分析一下为什么是两个。
首先分页查询时会包含指定页的数据,这就需要一次查询,这是一层信息。其次,除了实际的数据外,还需要展示分页信息,比如总共多少条、总共多少页这种的,单独靠第一条查询是解决不了这个问题的,因为他只查询了指定条。这些可以解释为什么两条。
接下来说一下他们的顺序。先查出总条数,如果没有满足条件的,那么就没必要再去查询一次指定页的数据了,因为总数就为0,分页更不可能大于0。课程里这种写法就是考虑了这种情况,如果一条sql能满足查询,就不去做第二次查询了。

0 回复 有任何疑惑可以回复我~
  • 提问者 活宝天道 #1
    老师,我说的是这种
     BeanValidator.check(pageQuery);
            List<SysUser> users = userMapper.getPageByDeptId(deptId, pageQuery);
            PageResult<SysUser> pageResult = null;
            if (CollectionUtils.isNotEmpty(users)) {
                pageResult = PageResult.<SysUser>builder().data(users).total(users.size()).build();
            } else {
                pageResult = PageResult.<SysUser>builder().build();
            }
            return pageResult;
    回复 有任何疑惑可以回复我~ 2019-01-07 20:18:10
  • Jimin #2
    你看一下你的截图,和这个要做的事情不一样啊
    回复 有任何疑惑可以回复我~ 2019-01-07 22:56:03
  • 聪明鹏 回复 提问者 活宝天道 #3
    你这样查出来的总条数不对,这个sql是做过limit处理的,用 user.size() 取到的值最大才是 pageSize 的值
    回复 有任何疑惑可以回复我~ 2021-11-24 16:36:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信