本文全部方法都是从网上借鉴的,供大家学习,如有侵权请联系我。
SQL实现
/**
*table(待排序表名)
*column(待排序属性)
*/
select * from table orderby column is null, column asc
java实现
List:
/**
*list(待排序的实体集合)
*Entity(实体)
*Column(排序字段)
*Type(排序字段类型)
*/
list.stream().sorted(
Comparator.comparing(Entity::getColumn, Comparator.nullsLast(Type::compareTo)))
.collect(Collectors.toList());
jpa不推荐,之所以不推荐是因为:如果是分页数据,该方法把所有数据查询后再筛选再分页的效果不如jpa直接在数据库执行筛选和分页效率高。
jpa(使用hibernate推荐):
1、添加jpa配置:在配置文件application.yml中spring的jpa属性下添加:
jpa:
properties:
hibernate.order_by.default_null_ordering: last
但要添加hibernate相关依赖;
2、如果使用了hibernate的Criteria接口的话,
/**
*criteria(待排序继承hibernate的Criteria的实体)
*column(待排序属性)
*/
criteria.addOrder(Order.asc("column").nulls(NullPrecedence.LAST));
声明: 转载需要注明出处