Mybatis自定义排序详解
共 863字,需浏览 2分钟
·
2021-03-27 00:49
简单排序例子
需求提升,小试牛刀
函数说明
实现方式1:直接排序
实现方式2:自定义排序字段后排序
需求提升,大展身手
简单排序例子
我们现在有学生数据
简单查询排序按照分数的升序排列
需求提升,小试牛刀
但是我们现在有一个需求,把分数分为3个等级,
优秀(80分以上)合格【60-80】不合格(60分一以下)
要求排序的顺序是:优秀--合格--不合格,同等级的再按照分数的升序排序
根据我们的数据,一共有5个分数(40,49,60,89,98),按照以上的排序需求,正确的排序后的结果顺序应该为(89,98,60,40,49)
看到这个(89,98,60,40,49),懵了,这完全没有规律可言,这就需要我们的自定义排序了,也就是我们这篇文章的主题
函数说明
CASE
Powered by Ad.Plus
WHEN 条件1 THEN 返回结果1
WHEN 条件2 THEN 返回结果2
ELSE 返回结果3
END 正序还是倒序
CASE 表示函数开始
END 表示函数结束
如果 条件1 成立,则返回 返回结果1, 如果 条件2 成立,则返回 返回结果2,当全部不成立则返回ELSE后面的返回结果3,而当有一个成立之后,后面的就不执行了。
实现方式1:直接排序
实现方式2:自定义排序字段后排序
需求提升,大展身手
现在我们的需求提升了,分数还是分为3个等级,
优秀(80分以上)合格【60-80】不合格(60分一以下)
要求排序的顺序是:优秀--合格--不合格,但是要求优秀的级别内按降序排序,其他按升序排序,那所期望的结果就变为(98,89,60,40,49)
上面实现方式2中实现了所有的级别内都是统一升序或者降序排序,那么要满足我们现在的需求,那就再改造一下