情况说明

再写一个分页接口时,发现分页不好用。
我一直用的都是mybais-plus的com.baomidou.mybatisplus.extension.plugins.pagination.Page中的List orders
在页面上有排序的时候,我都让前端拼一下OrderItem的这个类的JSON。

	"orders": [
        {
            "column": "create_time",
            "asc": false
        }
    ]

但是我今天让前端拼完参数以后,发现排序不好用了。
这令我很是疑惑啊。因为以前都是用这种方式来处理在前端页码中的排序。
而且同一个项目上其他的以同样方式写的接口,排序都是好使的(这个是我后来才发现的)。

项目基本情况

我用mybatis-plus的版本

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!-- 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.0</version>
        </dependency>

mybatis-plus的配置类

    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return  new PaginationInterceptor();
    }

解决问题的过程

一开始在AI上搜啊,给出的结果。
1、大概的意思是mybatis-plus的3.4.0版本不太稳定,让我升级mybatis-plus的版本(这个感觉也不太靠谱,升级框架版本影响面太广)。
2、让我修改mybatis-plus的配置类(这个修改完了以后没屌用)。
3、让我手动在xml中,写order by(最后无奈采取了这种方式)。

最后的原因

最后我发现同一个项目中其他写的分页接口,排序是好用的。所以我排除了整个项目中,这种方式写的都不好使的结论。
那就只能再看看,这个接口中的sql了。
我在select 中使用EXISTS关键字,于是就想到可能是用了这个关键字导致mybatis-plus的识别不出来加order by的位置了。
我就把EXISTS关键字暂时删除了。
果然删除以后排序就好使了。

总结一下

导致这次出现的问题的原因就是,mybatis-plus版本不稳定。涉及到复杂一些的sql,可能导致排序不好用。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐