Mybatis Plus 自定义语句分页 带with(nolock) 与orderby 冲突解决方案

2023-12-28 14:19:29

使用?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());

?

?

文章来源:https://blog.csdn.net/chengmin123456789/article/details/135261739
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。