例如,有如下场景:
你需要根据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<?