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

mybatis-plus——实现动态字段排序,根据实体获取字段映射数据库的具体字段

前言

前端需要根据表头的点击控件可以排序,虽然前端能根据当前页的数据进行对应字段的排序,但也仅局限于实现当前页的排序,无法满足全部数据的排序,所以需要走接口的查询进行排序,获取最全的排序数据

实现方案

  1. 前端将排序的字段通过接口传入{"column":"dtCreateTime","order":"ASC"}
  2. 后端使用 mybatis-plus 的TableInfoHelper获取到字段映射的数据库字段
  3. 组装 order by 然后放置在LambdaQueryWrapper.last(orderSql)方法中

关键代码摘录

目前就简单考虑传入一个字段进行排序,多个可以使用逗号分隔等等,具体情况具体实现。

/**  * 根据查询条件拼接得到order by语句  * @param req 分页查询条件  * @return String  */public String getOrderByStatement(PageReq req) {  if (StringUtils.isNoneBlank(req.getColumn(), req.getOrder())) {  TableInfo tableInfo = TableInfoHelper.getTableInfo(EntityDemo.class);  List<TableFieldInfo> fieldList = tableInfo.getFieldList();  Optional<String> colum = fieldList.stream()  .filter(v -> StringUtils.equals(v.getEl(), req.getColumn()))  .findFirst()  .map(TableFieldInfo::getColumn);  if (colum.isPresent()) {  return String.format(" order by %s %s", colum.get(), req.getOrder());  }  }  return null;  
}

将上述的 order by 的 sql 放置在 LambdaQueryWrapper 生成的 sql 最后

String orderSql = getOrderByStatement(req);  
LambdaQueryWrapper<EntityDemo> queryWrapper = Wrappers.lambdaQuery(EntityDemo.class)  .查询条件 .last(StringUtils.isNotBlank(orderSql), orderSql);

总结

或许上面的方案不是比较好的方案,但是可以避免驼峰转换(数据库库区分字段大小写)和非表字段错误的情况。
上面并不是生产环境的代码,只是为了说明情况简化的代码。但核心还是TableInfoHelper,最后,祝各位玩的愉快。

http://www.lryc.cn/news/411337.html

相关文章:

  • redis:Linux安装redis,redis常用的数据类型及相关命令
  • JavaScript 和 HTML5 Canvas实现图像绘制与处理
  • Java之Java基础二十(集合[上])
  • 【C++BFS】1162. 地图分析
  • 实战:安装ElasticSearch 和常用操作命令
  • React-Native 宝藏库大揭秘:精选开源项目与实战代码解析
  • 数据结构:二叉树(链式结构)
  • 召唤生命,阻止轻生——《生命门外》
  • JVM:栈上的数据存储
  • C#实战 - C#实现发送邮件的三种方法
  • 数模原理精解【5】
  • C语言篇——使用运算符将16进制数据反转
  • 2025年和2024CFA一级SchweserKaplan Notes 全集 (内附分享链接)
  • B树的实现:代码示例与解析
  • HCIA总结
  • 软件测试_接口测试面试题
  • C++初阶学习第五弹——类与对象(下)
  • 最低工资标准数据(2001-2023年不等)、省市县,整理好的面板数据(excel格式)
  • 计算机毕业设计选题推荐-戏曲文化体验系统-Java/Python项目实战
  • 【深度学习】CosyVoice,论文
  • PHP8.3.9安装记录,Phpmyadmin访问提示缺少mysqli
  • [译] 深入浅出Rust基金会
  • Postman:API开发与测试的强大伴侣
  • Web应用的视界革命:WebKit支持屏幕方向API的深度解析
  • 【前端】一文带你了解 CSS
  • IT服务运营管理中的关键考核指标
  • 复习C语言从源文件.C到二进制.bin或可执行文件.exe文件的流程
  • 如何恢复硬盘里删除的数据?硬盘数据恢复真的可靠吗?2024最新解答!
  • Android Studio的新界面,怎么切换回老界面
  • 怎么用U盘重装系统