当前位置: 首页 > 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的:


注意细节点 :
 

好了,该篇就到这。

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

相关文章:

  • 期刊会议审稿意见
  • Java类加载机制:从字节码到对象的奇妙之旅
  • 代码随想录第一天|二分法、双指针
  • Flink中KeyedStateStore实现--怎么做到一个Key对应一个State
  • flex: 0 0 100%;
  • IMX6ULL系统移植篇-镜像烧写方法
  • 【Android】实现雷达扫描效果,使用自定义View来绘制雷达扫描动画
  • 小程序 - 文件预览
  • 将String类型的证书转换为X509Certificate类型对象,读取证书链文件内容,完成证书链校验
  • v-model实现原理(一根绳上的蚂蚱)
  • 第三章 仅支持追加的单表内存数据库
  • 抖音seo矩阵系统源码解析
  • 6个ChatGPT4的最佳用途
  • go系列-读取文件
  • 10 编码转换问题
  • Spring MVC获取参数和自定义参数类型转换器及编码过滤器
  • 理想的实验
  • nginx配置开机启动(Windows环境)
  • MySQL 基础面试题02(事务索引)
  • 主从架构lua脚本-Redis(四)
  • maven与idea版本适配问题
  • ChatGPT扫盲知识库
  • chatgpt赋能python:Python轨迹可视化:用数据讲故事
  • K-means
  • 归并排序(基础+提升)
  • MATLAB应用
  • LeetCode --- 1784. Check if Binary String Has at Most One Segment of Ones 解题报告
  • js:javascript中的事件体系:常见事件、事件监听、事件移除、事件冒泡、事件捕获、事件委托、阻止事件
  • 【数据结构】特殊矩阵的压缩存储
  • 在layui中使用vue,使用vue进行页面数据部分数据更新