SQLSERVER 查询语句加with (NOLOCK) 报ORDER BY 报错 除非另外还指定了 TOP、OFFSET 或 FOR XML

最近有一个项目在客户使用时发现死锁问题,用的数据库是SQLSERVER ,死锁的原因是有的客户经常去点报表,报表查询时间又慢,然后又有人在做单导致了死锁,然后主管要我们用SQLSERVER查询时要加with (NOLOCK),但是我在加完 with (NOLOCK) 后发现已经的用Mybatis-plus的 在mybatis里的分页报错了

原因是用了with (NOLOCK) ,select count 把ORDER BY 也放进去了,所以报了这个错

解决办法

1.如果你不是很需要加with (NOLOCK) 的话还是不要加为好。

2.你确实需要加的话,还要用Mybatis-plus的话,要么就自己写select count,要么也可以自己写个后端分页,还可以和pagehelper分页插件组合使用

我的解决办法(将IPage 查询结果换成List 集合返回结果 然后 再将List集合转化成IPage 分页集合)

javascript 复制代码
protected IPage list2Page(Term term, List list) {
        IPage iPage = this.getPage(term);
        int start = (term.getPage() - 1) * term.getRows();
        int end = term.getPage() * term.getRows();
        List list$cpage = new ArrayList();

        for(int i = 0; i < list.size(); ++i) {
            if (i >= start && i < end) {
                list$cpage.add(list.get(i));
            }
        }

        iPage.setTotal((long)list.size());
        iPage.setRecords(list$cpage);
        return iPage;
    }
相关推荐
ohoy6 小时前
mysql 30天自动补0
数据库·mysql
摇滚侠9 小时前
Redis 零基础到进阶,Redis 哨兵监控,笔记63-73
数据库·redis·笔记
利剑 -~9 小时前
mysql面试题整理
android·数据库·mysql
老华带你飞9 小时前
物流信息管理|基于springboot 物流信息管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
程序员卷卷狗9 小时前
Redis事务与MySQL事务有什么区别?一文分清
数据库·redis·mysql
玩大数据的龙威9 小时前
农经权二轮延包—数据(新老农经权)比对软件更新
数据库·arcgis
保持低旋律节奏9 小时前
网络系统管理——期末复习
数据库
程序员佳佳10 小时前
2025年大模型终极横评:GPT-5.2、Banana Pro与DeepSeek V3.2实战硬核比拼(附统一接入方案)
服务器·数据库·人工智能·python·gpt·api
roo_110 小时前
github 获取构造图数据库的LNB数据集和使用说明
数据库
罗汉松驻扎的工作基地11 小时前
sql server 2014 下载和安装
数据库