按照状态实现自定义排序的方法
方法一:使用 MyBatis-Plus 的 QueryWrapper 自定义排序
在查询时动态构建排序规则,通过 CASE WHEN
语句实现优先级排序:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;@Service
public class ProjectConfigService {public List<ProjectConfigEntity> listProjectsByStatusPriority() {// 自定义排序:进行中(1) > 已完成(2) > 待启动(0)QueryWrapper<ProjectConfigEntity> queryWrapper = new QueryWrapper<>();queryWrapper.orderByAsc("CASE " +"WHEN project_status = 1 THEN 1 " + // 进行中排第一"WHEN project_status = 2 THEN 2 " + // 已完成排第二"ELSE 3 END"); // 待启动排第三return projectConfigMapper.selectList(queryWrapper);}
}
方法二:在实体类中使用 @TableField 注解添加默认排序
如果你希望所有查询都自动应用此排序规则,可以在实体类中添加默认排序注解:
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;
import lombok.Data;@Data
@TableName("dste_project_config_new")
public class ProjectConfigEntity implements Serializable {private static final long serialVersionUID = 1L;// 其他字段保持不变.../*** 项目状态(0:待启动,1:进行中,2:已完成)*/@TableField(value = "project_status", condition = "%s = CASE WHEN project_status = 1 THEN 1 " +"WHEN project_status = 2 THEN 2 " +"ELSE 3 END")private Integer projectStatus;
}
方法三:使用自定义 SQL 查询
如果你需要更复杂的排序逻辑,可以在 Mapper 接口中定义自定义 SQL:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;public interface ProjectConfigMapper extends BaseMapper<ProjectConfigEntity> {@Select("SELECT * FROM dste_project_config_new " +"ORDER BY CASE " +"WHEN project_status = 1 THEN 1 " +"WHEN project_status = 2 THEN 2 " +"ELSE 3 END")List<ProjectConfigEntity> selectProjectsByStatusPriority();
}
方法四:使用 MyBatis-Plus 的 LambdaQueryWrapper自定义排序
public List<ProjectConfigEntity> listProjectsByStatusPriority() {// 使用LambdaQueryWrapper实现类型安全的自定义排序LambdaQueryWrapper<ProjectConfigEntity> wrapper = new LambdaQueryWrapper<>();wrapper.orderByAsc(true, "CASE " +"WHEN project_status = 1 THEN 1 " + // 进行中排第一"WHEN project_status = 2 THEN 2 " + // 已完成排第二"ELSE 3 END");return projectConfigMapper.selectList(wrapper);}
方法五:避免硬编码表字段名,可以结合实体类的属性名和 SQL 片段
LambdaQueryWrapper<ProjectConfigEntity> wrapper = new LambdaQueryWrapper<>();String statusSortSql = String.format("CASE " +"WHEN %s = 1 THEN 1 " +"WHEN %s = 2 THEN 2 " +"ELSE 3 END",StringUtils.camelToUnderline(ProjectConfigEntity::getProjectStatus), // 驼峰转下划线StringUtils.camelToUnderline(ProjectConfigEntity::getProjectStatus));wrapper.orderByAsc(true, statusSortSql);
排序原理说明
以上五种方法均基于 SQL 的 CASE WHEN
语句实现自定义排序:
- 进行中(状态值=1):优先级最高,排序值为 1
- 已完成(状态值=2):优先级次之,排序值为 2
- 待启动(状态值=0):优先级最低,排序值为 3
相关文章:
按照状态实现自定义排序的方法
方法一:使用 MyBatis-Plus 的 QueryWrapper 自定义排序 在查询时动态构建排序规则,通过 CASE WHEN 语句实现优先级排序: import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Ser…...

游戏引擎学习第313天:回到 Z 层级的工作
回顾并为今天的内容定下基调 昨天我们新增了每个元素级别的排序功能,并且采用了一种我们认为挺有意思的方法。原本计划采用一个更复杂的实现方式,但在中途实现的过程中,突然意识到其实有个更简单的做法,于是我们就改用了这个简单…...
论文阅读:arxiv 2024 SmoothLLM: Defending LLMs Against Jailbreaking Attacks
SmoothLLM: Defending LLMs Against Jailbreaking Attacks 总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 https://www.doubao.com/chat/6961264964140546 https://github.com/arobey1/smooth-llm https://arxiv.org/pd…...

Milvus部署架构选择和Docker部署实战指南
导读:向量数据库作为AI时代的核心基础设施,Milvus凭借其强大的性能和灵活的架构设计在市场中占据重要地位。然而,许多开发者在部署Milvus时面临架构选择困惑和配置复杂性挑战,导致项目进展受阻。 本文将为您提供一套完整的Milvus部…...

高效合并 Excel 表格实用工具
软件介绍 这里介绍一款用于 Excel 合并的软件。 使用反馈与工具引入 之前推荐过 Excel 合并工具,但有小伙伴反馈这些工具对于需要合并单元格的 Excel 文件不太适用,而且无法合并表头。鉴于这些问题,找到了今天要介绍的这款 Excel 合并工具…...
【前端】Vue3 中实现两个组件的动态切换保活
在 Vue3 中实现两个组件的动态切换保活,核心是通过 <component> 动态组件与 <KeepAlive> 缓存组件的组合使用。以下是具体实现方案和进阶技巧: 一、基础实现方案 1. 动态组件 KeepAlive 保活 使用 <component :is> 实现动态切换&am…...

拉取gitlab项目
一、下载nvm管理node 先下载配置好nvm,再用nvm下载node 下载链接:开始 下载nvm - nvm中文官网 情况:npm i 下载依赖缓慢,可能是node版本不对,可能node版本太高 可能得问题:使用nvm 下载低版本的node时,…...

树莓派(Raspberry Pi)安装Docker教程
本章教程,主要介绍如何在树莓派上安装Docker。 一、安装步骤 # 卸载旧版本(如果有): for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg;...

计算机视觉---YOLOv4
YOLOv4(You Only Look Once v4)于2020年由Alexey Bochkovskiy等人提出,是YOLO系列的重要里程碑。它在YOLOv3的基础上整合了当时最先进的计算机视觉技术,实现了检测速度与精度的显著提升。以下从主干网络、颈部网络、头部检测、训练…...

在雄性小鼠自发脑网络中定位记忆巩固的因果中枢
目录 简要总结 摘要 1 引言 2 方法 3 结果 简要总结 这篇文章主要研究了雄性小鼠在自发脑网络中记忆巩固的因果中枢定位。记忆巩固涉及学习后休息和睡眠期间全脑网络的自发重组,但具体机制尚不清楚。目前理论认为海马体在这一过程中至关重要,但其他…...

刷机维修进阶教程-----没有开启usb调试 如何在锁定机型的拨号界面特殊手段来开启ADB
有时候我们会遇到一些机型被屏幕锁 账号锁等锁定。无法进入系统界面。也没有开启usb调试的情况下如何通过一些操作来开启adb调试。然后通过adb指令来禁用对应的app顺利进入系统。以此来操作保数据等操作. 通过博文了解💝💝💝 1💝💝💝----了解一些品牌机型锁定状态…...

Selenium 测试框架 - Kotlin
🚀Selenium Kotlin 实践指南:以百度搜索为例的完整测试示例 随着测试自动化的普及,Selenium 已成为 Web 自动化测试的事实标准,而 Kotlin 凭借其简洁语法和高安全性,越来越受到开发者欢迎。本指南将通过一个完整的实战案例——在百度中执行搜索操作,来展示如何使用 Sele…...
docker运行centos提示Operation not permitted
在使用Docker运行CentOS容器时,遇到"Operation not permitted"错误,通常是由于权限问题或容器安全策略引起的。以下是详细的排查和解决步骤: 步骤一:检查Docker版本和系统更新 首先,确保你的Docker和系统软…...

010501上传下载_反弹shell-渗透命令-基础入门-网络安全
文章目录 1 上传下载2 反弹shell命令1. 正向连接(Forward Connection)正向连接示例(nc) 2. 反向连接(Reverse Connection)反向连接示例(反弹 Shell) 对比表格实际应用中的选择防御建…...

Flask集成Selenium实现网页截图
先看效果 程序实现的功能为:截取目标网址对应的页面,并将截取后的页面图片返回到用户端,用户可自由保存该截图。 支持的url参数如下: url:目标网址(必填项),字符串类型,…...
机顶盒CM311-5s纯手机免拆刷机,全网通,当贝桌面
需要用到的工具 安卓手机一台 甲壳虫adb助手(安卓app) OTG转换线一个(或者用usb,typec双头的U盘一个,未测试) 8g U盘一个 用到的刷机文件 1.放入手机中的文件 misc recovery 2. 放入U盘根目录 upda…...

知识图谱:AI时代语义认知的底层重构逻辑
在生成式人工智能(GEO)的技术架构中,知识图谱已从辅助性工具演变为驱动机器认知的核心神经中枢。它通过结构化语义网络的重构,正在突破传统数据处理的线性逻辑,建立机器对复杂业务场景的深度理解能力。 一、语义解构&a…...
centos7安装MySQL(保姆级教学)
在 Linux 系统的软件管理中,YUM(Yellowdog Updater, Modified)包管理器是不可或缺的工具,而 YUM 源的选择与配置直接影响着软件安装与更新的效率。本文将深入解析网络 YUM 源的分类,详细介绍如何使用知名平台提供的 YU…...
2025.5.23 【ZR NOI模拟赛 T3】高速公路 题解(容斥,高维前缀和,性质)
非常牛的题,记录一下思路。 传送门 题意 有一张 n n n 个点的无向图,每个点有一个颜色 c i c_i ci,满足 c i ∈ [ 1 , k ] c_i \in [1, k] ci∈[1,k]。 图是由 m m m 条链组成,满足任意一个点恰好只在一条链上。对于一…...

QGIS新手教程2:线图层与多边形图层基础操作指南(点线互转、中心点提取与WKT导出)
QGIS新手教程:线图层与多边形图层基础操作指南(点线互转、中心点提取与WKT导出) 目录 QGIS新手教程:线图层与多边形图层基础操作指南(点线互转、中心点提取与WKT导出)📌 引言第一部分࿱…...
nova14 ultra,是如何防住80°C热水和10000KPa水压冲击的?
暴雨突袭,手忙脚乱护住背包,却担心手机被雨水浸湿;泳池里想记录美好时刻,却担心手机掉入水中 ;厨房里充满了高温水汽,近距离拍摄美食瞬间,手机屏幕花屏,让人失去了对美食的兴趣…… …...
Spring Boot项目中实现单点登录(SSO)完整指南
单点登录(Single Sign-On, SSO)是一种身份验证机制,允许用户使用一组凭证(如用户名和密码)登录多个相关但独立的系统。 一、单点登录的核心原理 SSO的核心原理使集中认证、分散授权,主要流程如下: 1.用户访问应用A 2.应用A检查本地会话&a…...

Windows环境下Redis的安装使用与报错解决
最近在做项目的时候需要用到Redis,本来没觉得是什么麻烦,下载安装使用一步到位的事,但紧随而来的问题,让我开始怀疑人生,再加上代码跑不出来,我还专门找人给我看看怎么个是,结果就是单纯的Redis…...

鸿蒙完整项目-仿盒马App(一)首页静态页面
跟着鸿蒙小林博主,练习下项目~记录下首页的搭建,后续继续完善和整体项目完成会进行布局修改,先按照博主的跟做,后续在改 1.分为底部整体框架搭建 2.首页布局(顶部搜索、新人专享、金刚区(两个不同集合数据)…...
大模型(4)——Agent(基于大型语言模型的智能代理)
大模型Agent是一种基于大型语言模型(LLM)的智能系统,能够自主感知环境、规划任务、调用工具并完成复杂目标。其核心原理是将大模型的推理能力与外部行动能力结合,实现从“思考”到“行动”的闭环。以下是其原理详解与实现方法&…...

39-居住证管理系统(小程序)
技术栈: springBootVueMysqlUni-app 功能点: 群众端 警方端 管理员端 群众端: 1.首页: 轮播图展示、公告信息列表 2.公告栏: 公告查看及评论 3.我的: 联系我们: 可在线咨询管理员问题 实时回复 居住证登记申请 回执单查看 领证信息查看 4.个人中心: 个人信息查看及修改…...

WPF【11_4】WPF实战-重构与美化(MVVM 架构)
11-9 【理论】MVVM 架构 在 WPF 项目中,我们主要采用的是一种类似 MVC 的架构,叫做 MVVM。 MVVM 继承了 MVC 的理念,是 Model-View-ViewModel 的缩写,中文意思是模型、视图、视图模型。这三个词分开看我们都能看懂,不…...

计算逆时针夹角(有向角度)——CAD c# 实现两条线(向量)的逆时针夹角
效果如下: 附部分代码如下: public void 逆时针夹角Demo(){// 获取当前 CAD 文档和编辑器Document doc Application.DocumentManager.MdiActiveDocument;Editor ed doc.Editor;Database db doc.Database;try{Point3d vec1Start, vec1End;if (!GetTwoP…...
鸿蒙OSUniApp 开发带有通知提示的功能组件#三方框架 #Uniapp
使用 UniApp 开发带有通知提示的功能组件 在移动应用开发中,通知提示(Notification/Toast/Alert)是提升用户体验和交互效率的重要手段。无论是表单校验、操作反馈、系统消息还是营销推送,合理的通知提示都能帮助用户及时获取关键…...
前端EXCEL插件智表ZCELL数据源功能详解
一、数据源功能介绍 前端EXCEL插件智表ZCELL提供了强大的数据源管理功能,使开发者能够灵活地在电子表格中集成和管理结构化数据。数据源功能主要分为两种类型: 卡片式数据源:适合展示和编辑单个数据记录 表格式数据源:适合处理表…...