SqlServer_分页_OFFSET_FETCH

文章讲述了在使用SQLserver分页时遇到的问题,MyBatis-Plus的分页方法报错,原因是没有在`OFFSETROWSFETCHNEXTROWSONLY`中加入ORDERBY。作者发现加上`orderBy`进行排序后,解决了分页查询问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用SQL server分页

  • 使用SQL server分页的时候踩了一个坑:
    • 用mybatis-plus分页的时候始终报错
      在这里插入图片描述
    • 代码:
      Page<SystemDictCatalog> page = new Page<>(data.getPage(), data.getLimit());
      QueryWrapper<SystemDictCatalog> wrapper = new QueryWrapper<>();
      String dicId = data.getDictId();
      if (StringUtils.isNotBlank(dicId))
          wrapper.eq("dictId", dicId);
      Page<SystemDictCatalog> pageList = this.page(page, wrapper);
      
    • 使用上面代码始终报错,控制台日志,是使用OFFSET ? ROWS FETCH NEXT ? ROWS ONLY方法进行分页的,这和MySQLlimit是有区别的,而且这个只有在SQL server2021之后才有的关键字
    • 修改后的代码:
      Page<SystemDictCatalog> page = new Page<>(data.getPage(), data.getLimit());
      QueryWrapper<SystemDictCatalog> wrapper = new QueryWrapper<>();
      String dicId = data.getDictId();
      if (StringUtils.isNotBlank(dicId))
          wrapper.eq("dictId", dicId);
      wrapper.orderByAsc("DictId", "SortID");
      Page<SystemDictCatalog> pageList = this.page(page, wrapper);
      
      上面多加了一个orderBy,网上搜索了一些资料,发现他们使用OFFSET ? ROWS FETCH NEXT ? ROWS ONLY时都会使用orderby先进行排序,我尝试了一下,的确排序之后就可以愉快的分页查询了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值