使用?Mybatis Plus 自定义语句分页 语句带with(nolock)就会报错
### Error querying database. ?Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error of sql :?
?SELECT COUNT(1) FROM ( SELECT D.* ,CK.CKMC AS yrckmc
? ? ? ? FROM SPYCD D WITH(NOLOCK)
? ? ? ? LEFT JOIN ?CANGKU CK WITH(NOLOCK) ON D.DM2=CK.CKDM
? ? ? ? WHERE (d.dm1 = ? AND d.rq BETWEEN ? AND ?) ORDER BY d.rq DESC , d.djbh DESC ) TOTAL?
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
QueryWrapper wrapper=new QueryWrapper();
wrapper.eq("d.dm1", ckdm);
wrapper.orderByDesc("d.rq","d.djbh");
IPage<Spycd> ipage =spycdMapper.selectCustPage(getPage(term),wrapper);
IPage<Spycd> selectCustPage(Page page, @Param("ew")QueryWrapper wrapper);
SELECT D.* ,CK.CKMC AS yrckmc
FROM SPYCD D WITH(NOLOCK)
LEFT JOIN CANGKU CK WITH(NOLOCK) ON D.DM2=CK.CKDM
${ew.customSqlSegment}
?解决方式:
page.setSearchCount(false); //分页查询只查询不统计
?然后单独写个查询去统计
select '合计' as djbh,round(sum(sl),0) as sl,round(sum(je),2) as je ,count(1) as total
from Spycd D WITH(NOLOCK)
${ew.customSqlSegment}
然后将统计的总数赋给IPage
ipage.setTotal(footer.getTotal());
?
?