jpa specification 实现自定义字段的排序(附:MySQL的sql实现)

例如,有如下场景:
你需要根据table_a表的A字段的某些内容进行排序,让带有某些内容的数据优先显示,此时该字段A的内容并不是按照abcd这样的顺序进行排列,此时就需要用到自定义的排序操作。

先来看pgsql中的写法
SELECT a.A FROM table_a a ORDER BY CASE a.A WHEN '你好' THEN 1 WHEN '我好' THEN 2 WHEN '大家好' THEN 3 WHEN '是真滴好' THEN 4 END ASC
此时等于WHEN后面的字段内容就会按照THEN后面的1234的顺序进行ASC升序排序。

应用场景:最好是枚举类型的值,属于固定的值,例如下面的例子(没有使用枚举),获取的属性值等于 aaa 、bbb 、ccc 的时候会进行排序。并且会按照创建时间 createAt 进行排序

java代码实现:

	public ReturnType methodName(Integer page, Integer size, String string) throws Exception {
   

        Pageable pageable = new PageRequest(page, size);

        ReturnType returnType = repository.findAll(new Specification<ReturnType>() {
   
            @Override
            public Predicate toPredicate(Root<ReturnType> root, CriteriaQuery<?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值