Mybatis的四种分页方式详解

朴灿烈づ我的快乐病毒、 2023-09-28 18:01 59阅读 0赞

LIMIT关键字

  1. mapper代码

    select * from tb_user limit #{pageNo}, #{pageSize}

  2. 业务层直接调用

    public List findByPageInfo(PageInfo info) {
    return userMapper.selectByPageInfo(info);
    }

3,优点

灵活性高,可优化空间大
mysql分页语句优化

4,缺点

实现复杂。

RowBounds实现分页

Mybatis提供RowBounds类来实现逻辑分页。RowBounds中有2个字段offset和limit。这种方式获取所有的ResultSet,从ResultSet中的offset位置开始获取limit个记录。但这并不意味着JDBC驱动器会将所有的ResultSet存放在内存,实际上只加载小部分数据到内存,如果需要,再加载部分数据到内存。

  1. mapper代码

    select * from user

  2. dao代码

    1. List<User> selectPage(RowBounds rowBounds);
  3. 分页查询

    1. List<User> users = userMapper.selectPage(new RowBounds(5, 10));
    2. log.info("users:{}",users);

c4ebf799aac09525e52efbc923837e2b.png

查询结果:

  1. users:[User(id=6, username=柳云璇, grade=小三(5)班, age=25, phone=17358053274, sex=女), User(id=7, username=酆雨寒, grade=高一(5)班, age=19, phone=15394214112, sex=女), User(id=8, username=郑春阳, grade=小三(7)班, age=24, phone=15004202411, sex=男)]
  1. 优点

使用起来比直接limit简单。

5,缺点
DB压力比较大,因为将结果暂存在db了。

Interceptor实现

  1. 自定义Interceptor

    @Intercepts({@Signature(type = StatementHandler.class, method = “prepare”, args = {Connectio

发表评论

表情:
评论列表 (有 0 条评论,59人围观)

还没有评论,来说两句吧...

相关阅读