最新要闻
- 每日看点!安徽35岁女子在上海相亲,被62岁大爷相中,直言每月给30万零花钱
- 什么是核心素养?
- 每日热门:空气循环扇和传统风扇怎么选?别再被商家忽悠了
- 印度德里地铁将支持手机二维码乘车 网友:遥遥领先 焦点关注
- 当前热文:马斯克又出惊人语录:做生意是为了促进和保护人类文明
- 苹果受益!国产手机在德国等欧洲市场没法卖了:诺基亚用专利封杀 世界百事通
- 焦点热议:腾讯《三体》编剧:奈飞版《三体》一集的预算能拍我们一整部 技术太落后
- 312斤女网红在减肥营离世,专家:减肥不当会闭经,每周减重不要多于1Kg-时快讯
- 不请自来!哪些猫咪品种经常光顾邻居家?_今日精选
- 北向资金全天小幅净卖出6.41亿元 时讯
- 读懂“中文大脑”,破解阅读障碍
- 信用卡逾期收到律师函怎么办?信用卡逾期律师函来了后果严重吗?
- 新动态:彩票为什么不能网上卖_彩票为什么不能网上买
- 首款骁龙8 Gen2平板要来了:内置散热风扇 游戏神器|环球今头条
- 每日报道:AI血洗时尚圈!就连这些线上店家都开始用AI生成爆款了
- 电池有缺陷被特斯拉踢出供应链?宁德时代辟谣:消息不实
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
MyBatis-Plus 实现动态字段排序|播资讯
(资料图)
场景
虽然前端能根据返回的数组进行对字段的排序,但也仅局限于实现当前页的排序,无法满足全部数据的排序,所以需要走接口的查询进行排序,获取最全的排序数据。
思路
- 前端需传递排序的字段,该字段是正序还是倒叙。可能存在多个,所以字段为字符串数组,可以通过逗号分开。
- 后端拿到参数后,如果字段名是驼峰命名,需要转为小写字母+下划线命名。
- 将处理后的字段进行排序sql上的拼接处理后,拼接到 order by 语句后面,得到order by语句。
- 根据MyBatis-Plus的
last
方法,将处理的order by语句进行拼接到查询sql语句后面。
实现
- 前端传递的参数格式为:
{ "sort": "userName,updateTime", "order": "asc,desc"}
- 后端接收排序对象
Sorter
,那个请求查询用到自定义排序就继承该类:
import io.swagger.annotations.ApiModelProperty;import lombok.Data;/** 1. 基础排序对象,包含排序字段和排序方式 */@Datapublic class Sorter{ @ApiModelProperty(value = "排序字段",example = "userName") private String sort; @ApiModelProperty(value = "排序方式",example = "asc/desc") private String order; /** * 根据查询条件拼接得到order by语句 * @param sorter 分页查询条件 * @return String */ public static String getStatement(Sorter sorter) { String sort; String[] sortArray = {}; String[] orderArray = {}; String order = sorter.getOrder(); String sortColumn = sorter.getSort(); StringBuilder statement = new StringBuilder(); // 多字段排序 if (StringUtils.isNotEmpty(sortColumn)) { // 驼峰命名转为下划线 sort = StringUtils.toUnderScoreCase(sortColumn); if (sort.contains(",")) { sortArray = sort.split(","); } } else { return ""; } if (StringUtils.isNotEmpty(order)) { if (order.contains(",")) { orderArray = order.split(","); } } else { return ""; } if (sortArray.length > 0 && orderArray.length > 0) { int length = sortArray.length; for (int i = 0; i < length; i++) { statement.append(sortArray[i]); statement.append(" "); statement.append(orderArray[i]); if (i < length - 1 ) { statement.append(", "); } } } else { // " #{sort} #{order}“ statement.append(sort); statement.append(" "); statement.append(order); } return statement.toString(); } /** * 根据查询条件拼接得到order by语句 * @param sorter 分页查询条件 * @return String */ public static String getOrderByStatement(Sorter sorter) { String statement = getStatement(sorter); if (StringUtils.isNotEmpty(statement)) { return " order by " + statement; } else { return statement; } }}
- 处理字段驼峰式的工具类:
/** 3. 字符串工具类 4. 5. @author lcl */public class StringUtils extends org.apache.commons.lang3.StringUtils{ /** 下划线 */ private static final char SEPARATOR = "_"; /** * * 判断一个字符串是否为非空串 * * @param str String * @return true:非空串 false:空串 */ public static boolean isNotEmpty(String str) { return !isEmpty(str); } /** * 驼峰转下划线命名 */ public static String toUnderScoreCase(String str) { if (str == null) { return null; } StringBuilder sb = new StringBuilder(); // 前置字符是否大写 boolean preCharIsUpperCase = true; // 当前字符是否大写 boolean curreCharIsUpperCase = true; // 下一字符是否大写 boolean nexteCharIsUpperCase = true; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (i > 0) { preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); } else { preCharIsUpperCase = false; } curreCharIsUpperCase = Character.isUpperCase(c); if (i < (str.length() - 1)) { nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); } if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { sb.append(SEPARATOR); } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { sb.append(SEPARATOR); } sb.append(Character.toLowerCase(c)); } return sb.toString(); }}
- 请求查询的入参对象继承
Sorter
排序对象:
- Mapper层直接调用
last
在sql尾拼接语句方法,将Sorter
的getOrderByStatement(Sorter sorter)
方法传入:
结果
关键词:
MyBatis-Plus 实现动态字段排序|播资讯
环球热点评!【技术积累】数据结构中的基本概念【一】
多卡训练_环球热闻
快看点丨记录--新的HTML标签 :
每日看点!安徽35岁女子在上海相亲,被62岁大爷相中,直言每月给30万零花钱
什么是核心素养?
每日热门:空气循环扇和传统风扇怎么选?别再被商家忽悠了
印度德里地铁将支持手机二维码乘车 网友:遥遥领先 焦点关注
当前热文:马斯克又出惊人语录:做生意是为了促进和保护人类文明
苹果受益!国产手机在德国等欧洲市场没法卖了:诺基亚用专利封杀 世界百事通
焦点热议:腾讯《三体》编剧:奈飞版《三体》一集的预算能拍我们一整部 技术太落后
312斤女网红在减肥营离世,专家:减肥不当会闭经,每周减重不要多于1Kg-时快讯
不请自来!哪些猫咪品种经常光顾邻居家?_今日精选
环球微头条丨AI教你实现敏捷游戏自由,再也不用担心陷入瓶颈啦!
Linux Powershell 安装教程 天天快播报
C#语言async, await 简单介绍与实例(入门级) 当前聚焦
北向资金全天小幅净卖出6.41亿元 时讯
读懂“中文大脑”,破解阅读障碍
信用卡逾期收到律师函怎么办?信用卡逾期律师函来了后果严重吗?
新动态:彩票为什么不能网上卖_彩票为什么不能网上买
首款骁龙8 Gen2平板要来了:内置散热风扇 游戏神器|环球今头条
每日报道:AI血洗时尚圈!就连这些线上店家都开始用AI生成爆款了
电池有缺陷被特斯拉踢出供应链?宁德时代辟谣:消息不实
宣告放弃LCD材料!三星、LG供应商默克集团全力研发MicroLED等新材料
天天速讯:高考查分遇上端午假期:31省成绩23日起陆续公布
台电P76t_台电p76v
红楼梦摘抄400字_红楼梦摘抄
【全球新视野】柔道著名运动员(郝义 柔道运动员)
五证一书指什么生肖(五证一书指什么)|世界最新
A股分红派息转增一览:43股今日股权登记
每日焦点!苹果或重新发明苹果汽车安全带:打造发光安全带扣
又瞎折腾!Windows 11将删除9个文件夹选项
帮人就是帮己!西南大学校长毕业寄语被狂赞:外卖别随意给差评 大胆扶摔倒老人_环球观焦点
keycloak~CountDownLatch在keycloak中的使用 资讯推荐
高精度离线免费 的C#文字识别PaddleOCR库|速递
环球快讯:星纪魅族官宣参展2023 MWC上海:Flyme Auto、魅族20系列重磅登场
每日热文:余承东大喜!工信部:支持L3级及更高级别自动驾驶功能商业化应用
鲜嫩入味 Q弹不柴:驰迈即时鸡胸肉50g*5袋9.9元_天天看点
全球时讯:《闪电侠》预示华纳影业面临巨大亏空
环球今热点:国服关停5个月后:成都猎人队宣布彻底退出《守望先锋》联赛
全球简讯:即视角|出海正当时:欧美、东南亚、中东、拉美市场观察
参展动态 | 璞华参展第九届中国(上海)国际技术进出口交易会-全球关注
国泰君安:5月挖机销量略超预期,静待下半年行业复苏
致命摇篮下载 1080p 下载 致命摇篮迅雷下载 全球微动态
【世界新视野】京雄大桥顺利合龙!京雄高速将于年内全线通车(图)
【快播报】印尼很快将不再出口原铜因希望从资源中寻求更多价值金十数据6月21日讯,印度尼西亚总统佐科当地时间周二表示,该国很快将不再出口原铜,因为这一金属将在国内
首销仅售32元:3DMark登陆Epic商店
国内油价冲破上调红线!端午节过后涨价可能性很大
笔记本存储“官方升级”谁最贵最坑?对比后揭晓答案 新资讯
免费玩!国产大作《仙剑奇侠传7》即将登陆XGP订阅服务-当前短讯
演员陈建斌多巴胺穿搭引热议 律师:AI换脸侵犯肖像权
全球热推荐:官宣!NBA历史第一高薪即将诞生,哈登交易方案,勇士3人离队
万能u盘低级格式化工具下载_u盘格式化工具下载-世界热推荐
关于在Redhat-7-linux-系统-Apache-2.4.6-版本上部署多个版本的yum仓库-的配置文件写法
【Java】使用 validation 完成自定义校验注解 今日热文
性能提升30%!袋鼠云数栈基于 Apache Hudi 的性能优化实战解析|世界新视野
视频直播源码技术知识分享:连麦功能(一)
环球即时看!ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析
北汽极狐成立法务部:200万粉丝知名汽车博主收到“告知函” 快资讯
中国首位!科学家付巧妹获联合国阿勒福赞奖-全球快播
226元大额券:361板鞋运动鞋休闲鞋74元抄底|全球百事通
离大谱!男子偷马路卖钱:把路分成小块去卖 天天时讯
3岁女童患罕见病 肚大如石鼓随时会“爆炸”:医生科普 续命针1次上万-环球快播
当前滚动:【后端面经-java】java线程池满的处理策略
Rust语言 - 接口设计的建议之受约束(Constrained)_天天最资讯
java~理解可重入锁 焦点速读
硬件博主自费实测5大旗舰手机信号:iPhone各种被狂虐
焦点热文:载亿万富翁观光潜艇失联 被曝用游戏手柄操控 专家:生还希望渺茫
电动汽车也能无线充电了:像手机一样简单 超大充电板长这模样
全球热议:微软停止涨薪影响明显:员工跳槽意愿上涨23%
11499元 三星首款5K专业显示器上架:配可拆卸4K摄像头
环球今日讯!java~字节码操作ASM
班主任和家长扮恐龙接中考生 现场让网友看笑:可爱的显眼包 全球信息
史上最深深海救援!观光潜艇失联:搜救无进展 氧气剩不多、或卡残骸中|全球讯息
公募基金派发约八百亿元“红包雨” 债基占比超八成
俄妹COS《塞尔达》公主火了 性感美艳:欧美曾呼吁塞尔达公主应黑人|时快讯
环球热文:破75%了!理想汽车家用交流充电桩安装率遥遥领先
比亚迪赵长江:腾势N7领先两代 将成为家用和年轻人首选大五座标杆SUV
全球短讯!年轻人第一辆车!“小米汽车”非官方渲染图又来了:质感拉满 你会买吗
读发布!设计与部署稳定的分布式系统(第2版)笔记07_线程阻塞_每日速递
每日看点!从0开始,手写MySQL事务
MySQL事务基础知识 世界快资讯
世界即时:AMD Zen4c 128核心偷跑:只要4万元 不到官价一半
游客新疆旅游拍下雪崩全过程:壮观至极 众人尖叫_世界热文
【环球新视野】孟晚舟亲自站台!华为新杀手锏能否打破国际垄断?
耶鲁大学华裔学生驾车身亡:父母获赔2.5亿元_世界通讯
全球快看点丨观光泰坦尼克号潜艇失联:将是史上最深深海救援 将近4000米
手机可拆卸电池即将回归 利大于弊?
霍启刚患上睡眠窒息症:会被自己打鼾声惊醒 医生称严重会猝死-全球快看
今日报丨北京市下周一通过柜台市场发行20亿元3年期地方债券
每日热闻!5人宿舍热3年用掉水费5275元 高校回应:还算正常 个人习惯不同
世界快讯:618全网销售总额增速降至近3年最低:总销售额7987亿元创新高
ARP与dns缓存攻击 --中间人攻击
文心一言 VS 讯飞星火 VS chatgpt (43)-- 算法导论5.4 7题
用Python写了一个「拥抱梅西」的小游戏
天天时讯:证监会:券商应规范开立综合账户 加强异常交易监测
女子称网购八喜冰淇淋发现少10g:客服赔付了500元
腾讯视频VIP年卡+京东PLUS年卡 双会员仅138元
17万买纯电7座 2024款AION V Plus上市:更有AI的家庭SUV 每日资讯
环球速看:百公里油耗仅需6.1L !全新问界m5曝光:或售价25万起