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

Springboot Mybatis 自定义顺序排序查询,指定某个字段

前言

与本文无关

 "我进去了"  .......

正文

今天要讲些什么? 


其实很简单,就是查询数据的时候,想根据自己指定的字段的自定义顺序,做排序查询数据。


本篇文章会讲到的几个点 :

1. 单纯sql 怎么实现 排序
2. 单纯sql 怎么实现 自定义排序
3. 结合java ,怎么排序
4. 结合mybatis 怎么把 第2点的 排序sql 用起来
 

讲的过程,可能会不按照顺序。

开搞

先看示例表 :
 

product 产品表

示例数据:
 

排序, order by  asc 或者 order by  desc  很简单 

 比如 :  

SELECT * FROM  product  ORDER BY id DESC ;

那么如果有个需求,说不能按照id排序,需要按照产品名称 name 排序, 阁下又该如何应对呢?

比如说就是指定了 这个固定的顺序 :

 首先比较常规的方式 :
 

 ① 加 sort字段 order by sort

 ②  加个顺序配置表 关联表查询

这两个方法,对不起,太常规了,这一篇不说。

我们现在的要求再严格一点, 不准你动表结构这些。

怎么搞? 

使用 ORDER BY FIELD

示例:

  SELECT  *  FROM  product  ORDER BY FIELD(NAME,'大饼','书','棋','墨','笔','纸');

sql方面这样搞暂且OK。 

那么如果我说的是 我们现在是写功能需求, 用的就是java springboot mybatis 这些, 怎么去解决自定义顺序?

① 正常查出数据,然后循环变量,根据产品名称洗一遍数据。

常规操作,不介绍。

②通过我们平时经常使用的mybatis 也就是传参,然后执行sql查询实现。

也就是执行这个sql:

SELECT * 
  
FROM  product 
  
ORDER BY FIELD(NAME,'大饼','书','棋','墨','笔','纸');

简单写下,mapper :
 

/*** @author JCccc*/
@Mapper
public interface ProductMapper {List<Product> queryProductList(@Param("nameSortList") List<String> regularNameSortList);}

mapper.xml :
 

    <!--查询--><select id="queryProductList" resultMap="BaseResultMap">SELECTID,NAME,STATUSFROM product<if test="nameSortList != null and nameSortList.size >0  ">ORDER BY FIELD<foreach collection="nameSortList" item="name" open="(NAME," separator="," close=")">#{name}</foreach></if></select>

调用示例:


 结果是OK的:


注意细节点 :
 

好了,该篇就到这。

相关文章:

Springboot Mybatis 自定义顺序排序查询,指定某个字段

前言 与本文无关 "我进去了" ....... 正文 今天要讲些什么&#xff1f; 其实很简单&#xff0c;就是查询数据的时候&#xff0c;想根据自己指定的字段的自定义顺序&#xff0c;做排序查询数据。 本篇文章会讲到的几个点 &#xff1a; 1. 单纯sql 怎么实现 排序2. …...

期刊会议审稿意见

AAAI 修改意见 违背了研究方向的假设&#xff1b;虽然实验结果不错&#xff0c;但是没有明确地指向任何成功的方向&#xff0c;作者也没有充分地处理失败的案例——The results, though good are not clearly pointing to any direction of success, and the authors have no…...

Java类加载机制:从字节码到对象的奇妙之旅

目录 什么是类加载机制&#xff1f; 类加载顺序 类加载顺序图 双亲委派模型 双亲委派模型示意图 如何打破双亲委派模型&#xff1f; 要想学好java&#xff0c;首先得知道它是什么&#xff0c;怎么运行的&#xff0c;怎么加载的&#xff0c;运行的是个什么东西&#xff0c…...

代码随想录第一天|二分法、双指针

代码随想录第一天 Leetcode 704 二分查找Leetcode 35 搜索插入位置Leetcode 34 在排序数组中查找元素的第一个和最后一个位置Leetcode 69 x 的平方根Leetcode 367 有效的完全平方数Leetcode 27 移除元素Leetcode 26 删除有序数组中的重复项Leetcode 283 移动零Leetcode 844 比较…...

Flink中KeyedStateStore实现--怎么做到一个Key对应一个State

背景 在Flink中有两种基本的状态&#xff1a;Keyed State和Operator State&#xff0c;Operator State很好理解&#xff0c;一个特定的Operator算子共享同一个state&#xff0c;这是实现层面很好做到的。 但是 Keyed State 是怎么实现的&#xff1f;一般来说&#xff0c;正常的…...

flex: 0 0 100%;

flex: 0 0 100%; flex: 0 0 100%; 是一个用于设置flex项的flex-grow、flex-shrink和flex-basis属性的缩写flex-grow&#xff1a;指定了flex项在剩余空间中的放大比例&#xff0c;默认为0&#xff0c;表示不放大。在这个例子中&#xff0c;设置为0表示不允许flex项在水平方向上…...

IMX6ULL系统移植篇-镜像烧写方法

一. 烧录镜像简介 本文我们就来学习&#xff1a;windows 系统下烧录镜像的方法。 如何使用 NXP 官方提供的 MfgTool 工具通过 USB OTG 口来 烧写系统。 二. windows下烧录镜像 1. 烧录镜像前准备工作 &#xff08;1&#xff09;从开发板上拔下 SD卡。 &#xff08;2…...

【Android】实现雷达扫描效果,使用自定义View来绘制雷达扫描动画

要在Android上实现雷达扫描效果&#xff0c;你可以使用自定义View来绘制雷达扫描动画。以下是一个简单的示例代码&#xff1a; 创建一个名为RadarView的自定义View类&#xff0c;继承自View&#xff1a; import android.content.Context; import android.graphics.Canvas; im…...

小程序 - 文件预览

小程序文件预览 /** 预览 - txt文本 */viewTxt(path) {let fs wx.getFileSystemManager();let _this this;fs.readFile({filePath: path,encoding: "utf8",position: 0,success(res) {_this.setData({setNoRefresh: true});wx.navigateTo({url: /pages/view-txt/v…...

将String类型的证书转换为X509Certificate类型对象,读取证书链文件内容,完成证书链校验

证书内容如下所示: 证书内容如下 -----BEGIN CERTIFICATE----- MIIFZDCCA0ygAwIBAgIIYsLLTehAXpYwDQYJKoZIhvcNAQELBQAwUDELMAkGA1UEBhMCQ04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEbMBkGA1UEAwwSSHVhd2VpIENCRyBSb290IENBMB4XDTE3MDgyMTEwNTYyN1oXDTQyMDgxNTEw…...

v-model实现原理(一根绳上的蚂蚱)

目录 1、什么是v-model2、v-model实现原理3、实现示例3.1 实现text和textarea3.2 实现checkbox和radio3.3 实现select 1、什么是v-model v-model 本质上是一颗语法糖&#xff0c;可以用 v-model 指令在表单 <input>、<textarea> 及 <select>元素上创建双向数…...

第三章 仅支持追加的单表内存数据库

第三章 仅支持追加的单表内存数据库 我们将从小处着手&#xff0c;对数据库施加很多限制。目前&#xff0c;它有如下限制&#xff1a; 支持两种操作&#xff1a;插入一行和打印所有行 仅驻留在内存中&#xff08;不需要持久化到磁盘&#xff09; 支持单个硬编码表 我们的硬…...

抖音seo矩阵系统源码解析

抖音SEO矩阵系统源码是一种用于优化抖音视频内容的工具&#xff0c;可以帮助用户提高抖音视频的搜索排名和流量&#xff0c;从而增加视频曝光和转化率。该系统包括两部分&#xff0c;即数据收集和分析模块以及SEO策略和实施模块。 数据收集和分析模块主要负责从抖音平台上收集…...

6个ChatGPT4的最佳用途

文章目录 ChatGPT 4’s Current Limitations ChatGPT 4 的当前限制1. Crafting Complex Prompts 制作复杂的提示2. Logic Problems 逻辑问题3. Verifying GPT 3.5 Text 验证 GPT 3.5 文本4. Complex Coding 复杂编码5.Nuanced Text Transformation 细微的文本转换6. Complex Kn…...

go系列-读取文件

1 概述 2 整个文件读入内存 直接将数据直接读取入内存&#xff0c;是效率最高的一种方式&#xff0c;但此种方式&#xff0c;仅适用于小文件&#xff0c;对于大文件&#xff0c;则不适合&#xff0c;因为比较浪费内存。 2.1 直接指定文化名读取 在 Go 1.16 开始&#xff0c;i…...

10 编码转换问题

文章目录 字符编码问题编码转换问题ANSI转UnicodeUnicode转ANSIUtf8转 ANSIutf8 转UnicodeANSI 转UTF-8Unicode 转 UTF-8 全部代码 字符编码问题 Windows API 函数 MessageBoxA:MessageBox 内部实现&#xff0c;字符串编码(ANSI)转换成了Unicode,在调用MessageboxW MessageBox:…...

Spring MVC获取参数和自定义参数类型转换器及编码过滤器

目录 一、使用Servlet原生对象获取参数 1.1 控制器方法 1.2 测试结果 二、自定义参数类型转换器 2.1 编写类型转换器类 2.2 注册类型转换器对象 2.3 测试结果 三、编码过滤器 3.1 JSP表单 3.2 控制器方法 3.3 配置过滤器 3.4 测试结果 往期专栏&文章相关导读…...

理想的实验

1.关于“问题”的问题 一项研究计划可以围绕四个基本问题&#xff08;frequently asked questions,FAQ&#xff09;展开&#xff1a; 研究对象间的&#xff08;因果&#xff09;关系&#xff08;relationship of interest&#xff09; 这里更关注的是“因果关系”&#xff0c…...

nginx配置开机启动(Windows环境)

文章目录 1、下载nginx&#xff0c;并解压2、配置nginx.conf&#xff0c;并启动Nginx3、开机自启动 1、下载nginx&#xff0c;并解压 2、配置nginx.conf&#xff0c;并启动Nginx 两种方法&#xff1a; 方法一&#xff1a;直接双击nginx.exe&#xff0c;双击后一个黑色弹窗一闪…...

MySQL 基础面试题02(事务索引)

1.什么是 MySQL 事务&#xff1f; MySQL 事务是指一组操作&#xff0c;是一个不可分割的工作单位&#xff0c;可以确保一组数据库操作要么全部执行&#xff0c;要么全部不执行。换句话说&#xff0c;事务是 MySQL 中保证数据一致性和完整性的机制。 在 MySQL 中&#xff0c;事…...

分子对接盒子参数智能生成:GetBox-PyMOL-Plugin蛋白质结构分析专业指南

分子对接盒子参数智能生成&#xff1a;GetBox-PyMOL-Plugin蛋白质结构分析专业指南 【免费下载链接】GetBox-PyMOL-Plugin A PyMOL Plugin for calculating docking box for LeDock, AutoDock and AutoDock Vina. 项目地址: https://gitcode.com/gh_mirrors/ge/GetBox-PyMOL-…...

Qwen3-14B快速上手教程:命令行推理+参数详解(temperature/max_length)

Qwen3-14B快速上手教程&#xff1a;命令行推理参数详解&#xff08;temperature/max_length&#xff09; 1. 镜像概述与环境准备 Qwen3-14B是通义千问推出的大语言模型&#xff0c;本教程将指导您快速上手使用专为RTX 4090D 24GB显存优化的私有部署镜像。这个镜像已经预装了所…...

终极指南:3步用VR-Reversal将3D视频转为2D,普通设备也能自由探索VR世界

终极指南&#xff1a;3步用VR-Reversal将3D视频转为2D&#xff0c;普通设备也能自由探索VR世界 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址…...

5个关键步骤:OpenCore Legacy Patcher让老旧Mac焕发新生

5个关键步骤&#xff1a;OpenCore Legacy Patcher让老旧Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款基于Pytho…...

Flutter鸿蒙开发环境:从零到一,手把手解决环境配置与编译难题

1. 环境准备&#xff1a;搭建Flutter鸿蒙开发的基石 第一次接触Flutter鸿蒙开发时&#xff0c;环境配置就像盖房子的地基&#xff0c;看似简单却最容易踩坑。我在Windows系统上反复折腾了三天才搞定所有环境&#xff0c;这里把血泪经验总结成保姆级教程。首先需要明确的是&…...

Nanbeige4.1-3B惊艳效果:同一硬件下对比Phi-3-mini,Nanbeige长文本保持率+35%

Nanbeige4.1-3B惊艳效果&#xff1a;同一硬件下对比Phi-3-mini&#xff0c;Nanbeige长文本保持率35% 最近&#xff0c;一个只有30亿参数的小模型在开发者圈子里悄悄火了起来。它不是那种动辄千亿参数、需要顶级显卡才能跑的“巨无霸”&#xff0c;而是一个在普通硬件上就能流畅…...

保姆级教程:用yangipcclient RN SDK 8.0快速给你的App加上实时对讲功能

保姆级实战&#xff1a;React Native应用集成实时对讲功能的完整指南 想象一下&#xff0c;你正在开发一款智能家居控制应用&#xff0c;用户反馈最强烈的需求是能够直接与家中的设备进行语音对讲。或者你负责的教育类App&#xff0c;小组讨论时缺少高效的实时语音沟通工具。传…...

FreeSWITCH 1.10.10 图形化部署实战 - 麒麟V10 SP3 X86/ARM双架构服务器安装与配置指南

1. FreeSWITCH与麒麟V10 SP3的完美组合 FreeSWITCH作为一款开源的软交换平台&#xff0c;在企业通信、呼叫中心、即时通讯等领域有着广泛应用。而麒麟V10 SP3作为国产操作系统的代表&#xff0c;在信创领域扮演着重要角色。将这两者结合起来&#xff0c;既能满足国产化需求&am…...

OpenCore Legacy Patcher:终极指南让老旧Mac焕然新生

OpenCore Legacy Patcher&#xff1a;终极指南让老旧Mac焕然新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹果官方放弃支持的老旧Mac&a…...

什么是哈希算法?(大白话+原理+应用,一次讲透)

文章目录一、一句话定义二、用生活例子秒懂对应到代码里&#xff1a;三、哈希算法的核心特性&#xff08;面试必背&#xff09;四、为什么 HashSet.contains() 是 O(1)&#xff1f;&#xff08;结合哈希原理&#xff09;五、哈希算法的常见应用&#xff08;你日常都在用&#x…...