老师为什么这里显示的数据跟我数据库不符合?

老师为什么这里显示的数据跟我数据库不符合?

public void getAllPersons() {
    SqlSession sqlSession = getSqlSessionFactory().openSession();
    PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
    Page<Object> page = PageHelper.startPage(1, 10);
    List<Person> persons = personMapper.getAllPersons();
    //通过PageInfo可以把查询到的数据放到里面来
    PageInfo pageInfo = new PageInfo(persons,1);
    for (Person person :
            persons) {
        System.out.println(person.getId());

    }
    System.out.println("当前页码: " + page.getPageNum());//
    System.out.println("总的记录数: " + page.getTotal());
    System.out.println("每页的记录数: " + page.getPageSize());

    System.out.println("是否是第一页:"+pageInfo.isIsFirstPage());

    System.out.println("总的页码:"+pageInfo.getPages());
    int[] navigatepageNums = pageInfo.getNavigatepageNums();//当前页码的数组
    for (int i = 0; i < navigatepageNums.length; i++) {
        System.out.println(navigatepageNums[i]);
    }

http://img1.sycdn.imooc.com//climg/5d22d826000175ae08290585.jpg

我数据库中person表是有20006条数据的

http://img1.sycdn.imooc.com//climg/5d22d7550001d78806330249.jpg

为什么这里输出说总记录数只有10011条呢

而且这里说总的页码数是1002,我用1002*每页十条,也就10020条数据,也是跟我数据库不符合呀

http://img1.sycdn.imooc.com//climg/5d22d7d600012cf910630834.jpg

我配置文件中是正确配置了的

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好!这两种方式都可以,没有太大的区别,用哪个都行。PageInfo pageInfo = new PageInfo(persons,9);中的第二个参数9,是表示获取的是第9页的数据。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • MasonM 提问者 #1
    老师,那如果用PageInfo pageinfo=new PageInfo(persons,9)这种方式的话,因为第二个参数是获取第九页的数据,那还能获取到其他页的数据吗?
    2019-07-08 18:14:55
  • 好帮手慕珊 回复 提问者 MasonM #2
    你好!如果这么写是不能获取其他页的,但是这个参数的值可以是变化的,这样就能获取不同页的数据了。祝学习愉快!
    2019-07-08 19:00:08
提问者 MasonM 2019-07-08 15:50:42

我发现,生成PageInfo对象有两种方式,请问这两种方式各有什么不同?

1:

Page<Object> page = PageHelper.startPage(1, 10);
List<Person> persons = personMapper.getAllPersons();
//通过PageInfo可以把查询到的数据放到里面来
PageInfo pageInfo = new PageInfo(persons,9);

2:

Page<Object> page = PageHelper.startPage(1, 10);
List<Person> persons = personMapper.getAllPersons();
//通过PageInfo可以把查询到的数据放到里面来
PageInfo pageInfo =page.toPageInfo();

请问老师这两种方式生成PageInfo对象各有什么不同,有啥特别用处呢?用哪个比较好?

而且如果用PageInfo pageInfo = new PageInfo(persons,9);

这种方式的话,new PageInfo()里的第二个参数有啥作用?

好帮手慕珊 2019-07-08 15:38:16

同学,你好!首先要确认一下id那一列是从1开始的吗,这里的10011的数据统计不应该出错。如果记录数是10011,那么用10011除以10,商为1001余数是1,所以需要1002页来显示数据,这是没问题的。

查询前5条记录的语句:select * from person limit 0,5;

http://img1.sycdn.imooc.com//climg/5d22f2090001bb7905290196.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 MasonM #1
    噢~老师我懂了哈哈哈,我去看了前五条数据,发现是从第六条数据开始,id不是从7开始,而是从10001开始增加的,我一直误以为我的总记录数是20006哈哈,我看到查询结束之后的10011rows in set这句话就恍然大悟了,我的总条数的确是10011条,谢谢老师!
    2019-07-08 15:46:34
  • 提问者 MasonM #2
    老师我还想问一个问题,请看新回答!谢谢!!!
    2019-07-08 15:47:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师