最近有一個(gè)項(xiàng)目在客戶使用時(shí)發(fā)現(xiàn)死鎖問題,用的數(shù)據(jù)庫是SQLSERVER ,死鎖的原因是有的客戶經(jīng)常去點(diǎn)報(bào)表,報(bào)表查詢時(shí)間又慢,然后又有人在做單導(dǎo)致了死鎖,然后主管要我們用SQLSERVER查詢時(shí)要加with (NOLOCK),但是我在加完 with (NOLOCK) 后發(fā)現(xiàn)已經(jīng)的用Mybatis-plus的 在mybatis里的分頁報(bào)錯(cuò)了
原因是用了with (NOLOCK) ,select count 把ORDER BY 也放進(jìn)去了,所以報(bào)了這個(gè)錯(cuò)
解決辦法
1.如果你不是很需要加with (NOLOCK) 的話還是不要加為好。
2.你確實(shí)需要加的話,還要用Mybatis-plus的話,要么就自己寫select count,要么也可以自己寫個(gè)后端分頁,還可以和pagehelper分頁插件組合使用
我的解決辦法(將IPage 查詢結(jié)果換成List 集合返回結(jié)果 然后 再將List集合轉(zhuǎn)化成IPage 分頁集合)文章來源地址http://www.zghlxwxcb.cn/news/detail-650554.html
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;
}
文章來源:http://www.zghlxwxcb.cn/news/detail-650554.html
到了這里,關(guān)于SQLSERVER 查詢語句加with (NOLOCK) 報(bào)ORDER BY 報(bào)錯(cuò) 除非另外還指定了 TOP、OFFSET 或 FOR XML的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!