java criteria 排序_【java】实体类中 按照特定的字段 进行升序/降序 排序

背景:

实际页面上  所有的分值都是按照JSON格式存储在一个字符串中 存储在同一个字段中:

{"ownPTotal":"10>0","ownOTotal":"8>0","ownTotal1":"18","ownTotal2":"80","ownTotal3":"20","ownTotal4":"118","leadTotal1":"20","leadTotal2":"80","leadTotal3":"20","leadTotal4":"120","chiefCheck1":"","chiefCheck2":"","leadTotal5":"140"}

4be980302dbaba7c2687ae5c03948109.png

现在 需要按照 其中的 几种分值  进行升序/降序的排序操作

解决方法:

【因为不是按照原实体的中的字段进行排序,因此需要新建一个实体,将原实体中有用的字段和需要使用的值从字段中抽离出来 在新实体中设置成字段,如果需要进行排序的字段是原实体中就存在的,那就不需要新建实体了】

重点关注:

430efee6bf260e52ddfaa708629524eb.png

实现 Comparable接口需要实现的比较方法    这里动态比较 是按照 1.哪个字段进行排序   2.升序/降序

//排序方法

@Overridepublic intcompareTo(NewMonthPerEntity o) {double a1 = this.whichProperty.equals("leadTotal5") ? this.leadTotal5 : (this.whichProperty.equals("leadTotal4") ? this.leadTotal4 :(this.whichProperty.equals("ownTotal4") ? this.ownTotal4 :this.ownTotal4));double a2 = o.whichProperty.equals("leadTotal5") ? o.leadTotal5 : (o.whichProperty.equals("leadTotal4") ? o.leadTotal4 :(o.whichProperty.equals("ownTotal4") ?o.ownTotal4 :o.ownTotal4));if(this.ascDesc){//若是升序

return a1 > a2 ? 1 : -1;

}else{return a1 > a2 ? -1 : 1;

}

}

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值