当前位置: 首页 > news >正文

使用mybatis-plus,实现将排序时,字段值为NULL的数据排在最后

背景

业务需要根据一个时间字段进行排序,该字段非必填,使用 mybatis 默认排序规则,会将值为 NULL 的数据排在最前面,希望升序时,值为 NULL 的数据排在最后。

实现

错误实现

由于项目使用 mybatis-plus 进行查询,最开始想到的就是使用.last()方法,但试验后发现不行,在最后拼接语句,依旧会造成 NULL 值在最后

解决方案

查看 mybatis-plus 源码,发现其底层的实现思路是

发现 wrapper 中可以直接获取这个 expression

直接模仿该方法即可,将 NULL 值排序到最后的操作,放在排序规则第一个

实现

    /*** 排序时,将字段column为null的数据排到最后面* <pre>*     ORDER BY*             age DESC,*             CASE WHEN age IS NULL THEN 1 ELSE 0 END ASC** </pre>** @since 3.8.0.RC5*/private static final String ORDER_POST_NULL = "CASE WHEN {} IS NULL THEN 1 ELSE 0 END";/*** 排序时,将为字段column中,值为null的数据排在最后** @param column 排序字段* @return CASE 语句:CASE WHEN age IS NULL THEN 1 ELSE 0 END* @since 3.8.0.RC5*/public static <T> String getOrderNullPostSql(SFunction<T, ?> column) {return StrUtil.format(ORDER_POST_NULL, NtsWrappers.getColumnName(column));}/*** 将字段column中,值为null的数据排在最后** @param queryWrapper 查询条件构造器* @param column       排序字段* @param <T>          数据库实体类泛型* @since 3.8.0.RC5*/public static <T> void orderNullPost(LambdaQueryWrapper<T> queryWrapper, SFunction<T, ?> column) {queryWrapper.getExpression().add(ORDER_BY, () -> getOrderNullPostSql(column), ASC);}

使用时,在调用 mybatis-plus 的排序方法前先调用 orderBullPost 方法

http://www.dtcms.com/a/536684.html

相关文章:

  • Websocket两台服务器之间的通信
  • 网站技能培训班有哪些做网站用什么软件ps字体
  • 摩根大通将支持比特币和以太坊作为抵押品
  • 绿园区住房和城乡建设局网站c2c平台是什么意思
  • Web前端开发:用JavaScript阻止表单提交
  • 从 TCP 粘包到线程池:一起了解用 QRunnable 重构 Qt 高并发网络通信架构
  • Blender入门学习07 - 形态键
  • 网站推广常用方法包括二手车 东莞网站建设
  • LUMI 大模型分拣机器人应用 和 Lumi视觉标定
  • 开源项目分享:Gitee热榜项目 2025-10-27 日榜
  • [Dify 实战] 封闭插件开发到发布:本地编写、Remote调试与上线全流程(Python)
  • ARM《5》_系统移植(在开发板上运行linux程序)
  • 长沙网络营销公司排名郑州seo外包
  • 仿淘宝电商网站开发报价安徽网站开发培训价格
  • 关于Mysql的学习二(函数,约束与多表查询)
  • Milvus向量数据库介绍
  • 基于AI框架LangGraph对比Workflow模式与Agent模式
  • 哪个网站建设好网站建设的原则有哪些方面
  • 怎样给网站找空间做备案海南省住房和城乡建设部网站
  • 介绍如何借助淘宝/天猫的 API 接口,实现订单系统的自动同步
  • 错误处理最佳实践
  • 磁盘格式化和LVM挂载
  • 泛微Ecology9实现流程界面隐藏按钮
  • Viewport:网页设计中的关键元素及其优化策略
  • 网站建设功能报山东城乡建设厅网站首页
  • wordpress 页脚加链接外贸网站优化哪家好
  • 如何检索跟踪文献
  • 【u-boot】u-boot网络系统剖析
  • 生物突触功能总结
  • 搭建AI智能翻译器:快速部署Dify,接入AiOnly平台GPT-5模型