最近有一個項目在客戶使用時發現死鎖問題,用的數據庫是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 分頁集合)
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;}