CASE表达式,查询结果中为每个项目生成一个临时的排序键。和流操作sort排序

        order by case when p.project_status = 1 then 0 else 1 end, pu.create_time desc

case when p.project_status = 1 then 0 else 1 end
这是一个CASE表达式,用于在查询结果中为每个项目生成一个临时的排序键。
它检查p.project_status(即项目的状态)是否等于1。
如果p.project_status = 1,则CASE表达式的结果为0;否则,结果为1。
在SQL排序中,较小的值会被视为更“优先”或更“靠前”。因此,所有project_status为1的项目将在这个排序逻辑的第一部分中排在前面(因为它们被赋予了值0),而其他项目则排在后面(被赋予了值1)。

//先按项目状态排序 再按照创建时间倒序排列
.sorted(Comparator.comparing(ProjectVO::getProjectStatus)
.thenComparing(ProjectVO::getCreateTime,Comparator.reverseOrder()))
.collect(Collectors.toList());
  1. 流(Stream)操作
    • 这段代码通常位于一个流操作链中,其中.sorted(...)是一个中间操作,用于对流中的元素进行排序。排序后的流会继续后续的流操作。
  2. 排序逻辑
    • .sorted(Comparator.comparing(ProjectVO::getProjectStatus)...:这里使用Comparator.comparing静态方法来创建一个比较器,该比较器会根据ProjectVO对象的getProjectStatus方法的返回值来比较两个ProjectVO对象。这意味着流中的元素会首先按照项目的状态进行排序。
    • .thenComparing(ProjectVO::getCreateTime,Comparator.reverseOrder()):这是Comparator接口中的一个方法,用于在第一个比较器(按项目状态排序)的基础上添加一个额外的排序条件。这里,它使用ProjectVO::getCreateTime来指定第二个排序键,即项目的创建时间。同时,通过Comparator.reverseOrder()来指定这个排序键应该使用倒序排列(即最新的时间排在前面)。
  3. 收集结果
    • .collect(Collectors.toList()):这是流操作链的终止操作,它使用Collectors.toList()收集器来将流中的元素收集到一个新的列表中。在这个例子中,它收集的是已经按照项目状态和创建时间排序的ProjectVO对象列表。

综上所述,这段代码的作用是将一组P

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值