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">
        SELECT
         ID,NAME,STATUS
        FROM 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的:


注意细节点 :
 

好了,该篇就到这。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标青年

对你有帮助的话,谢谢你的打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值