此方法返回的OrderSpecifier<?>
对象可以直接用在JPAQuery<?>
中的.orderBy(orderSpecifier)
方法。(已包含包路径)
参数EntityPathBase
就是QueryDSL
生成的Qxxxx
类的对象。
/**
* 自定义分页时的排序字段
*
* @param pathBase
* @param pageOrder
* @param <T>
* @return
*/
public static <T> OrderSpecifier<?> getSortedColumn(EntityPathBase<T> pathBase, PageOrder pageOrder) {
String sort = pageOrder.getSortType();
String field = pageOrder.getSortName();
if (org.apache.commons.lang3.StringUtils.isAnyBlank(sort, field)) {
sort = "desc";
field = "createTime";
}
com.querydsl.core.types.Order order = "asc".equalsIgnoreCase(sort) ? Order.ASC : Order.DESC;
com.querydsl.core.types.Path<Object> fieldPath = com.querydsl.core.types.dsl.Expressions.path(Object.class, pathBase, field);
return new com.querydsl.core.types.OrderSpecifier(order, fieldPath);
}
@Data
public class PageOrder {
private int page;
private int size;
private String sortType;
private String sortName;
}