mybatis 分页参数 RowBounds

分页参数 RowBounds

mybatis不仅支持分页,它还内置一个专门处理分页的类 —— RowBounds源码。

package org.apache.ibatis.session;

/**
 * @author Clinton Begin
 */
public class RowBounds {

 //设置默认偏移量和默认限制条数。
  public static final int NO_ROW_OFFSET = 0;
  public static final int NO_ROW_LIMIT = Integer.MAX_VALUE;
  //根据无参构造方法构造默认对象。
  public static final RowBounds DEFAULT = new RowBounds();

  private int offset;
  private int limit;

  public RowBounds() {
    this.offset = NO_ROW_OFFSET;
    this.limit = NO_ROW_LIMIT;
  }

  public RowBounds(int offset, int limit) {
    this.offset = offset;
    this.limit = limit;
  }

  public int getOffset() {
    return offset;
  }

  public int getLimit() {
    return limit;
  }

}

offset属性指的是偏移量,即从第几行开始读取记录。limit是限制条数,也就是每次读取多少条记录。
使用它的方法十分简单,就是在原有的接口上新增这个分页参数。

    public List<Role> findRolesByMap(@Param("param1")RoleParam1 param1,@Param("param2")RoleParam2 param2,RowBounds rowBounds);

在我们的映射文件中不需要做任何修改。直接给出测试代码。

sqlSession = SqlSessionFactoryUtils.openSession();
            RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
            RoleParam1 param1 = new RoleParam1();
            RoleParam2 param2 = new RoleParam2();
            param1.setNote("1");
            param2.setRoleName("1");
            RowBounds rowBounds = new RowBounds(0,2);
            List<Role> role = roleMapper.findRolesByMap(param1,param2,rowBounds);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 原生 SQL 的 Limit 分页 原生 SQL 的 Limit 分页是最基本的分页方式,通过使用 Limit 关键字从数据库中分页查询数据。这种方式的优点是简单易懂,适合对数据量不大的表进行分页查询,缺点是需要手写 SQL 语句,不够灵活,对于复杂的查询条件和多表关联查询不太适用。 2. Mybatis 自带的 RowBounds 分页 Mybatis 自带的 RowBounds 分页方式是通过在查询语句中添加 RowBounds 参数来实现分页查询。这种方式的优点是使用简单,不需要手写 SQL 语句,缺点是需要手动计算分页参数,不够方便,而且 RowBounds 分页方式只能用于单表查询,不支持多表关联查询。 3. 自定义拦截器插件进行分页 自定义拦截器插件可以通过拦截 Executor 的 query 方法,在查询语句中自动添加分页参数,从而实现分页查询。这种方式的优点是可以自由控制分页参数,适用于复杂的查询场景,缺点是需要编写复杂的拦截器插件,开发成本高。 4. 使用 PageHelper 插件分页 PageHelper 插件是一个比较成熟、流行的 Mybatis 分页插件,可以在不修改原始 SQL 查询语句的情况下实现分页查询。这种方式的优点是使用简单,不需要手写 SQL 语句,支持多表关联查询和复杂查询条件,而且提供了丰富的分页功能和参数设置,缺点是插件本身会对查询语句进行修改,可能会影响查询性能。 总的来说,四种方式各有优劣,需要根据实际情况选择合适的方式。对于简单的分页场景,可以使用原生 SQL 的 Limit 分页或者 Mybatis 自带的 RowBounds 分页;对于复杂的查询场景,可以考虑使用自定义拦截器插件进行分页;对于大部分情况下的分页查询,可以使用 PageHelper 插件,提高开发效率和查询性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值