SqlServer_分页_OFFSET_FETCH

使用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先进行排序,我尝试了一下,的确排序之后就可以愉快的分页查询了。

你可能感兴趣的:(sqlserver,数据库,java,mybatis)