Object Sorting
1/19/24About 1 min
Sorting
easy-query provides convenient sorting query functionality, supporting function sorting and column sorting, etc.
Single Field Sorting
Object Mode
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> t.id().asc())
.toList();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` ORDER BY `id` ASC
<== Time Elapsed: 2(ms)
<== Total: 101Two Field Sorting
Object Mode
//Two field sorting
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> t.id().asc())
.orderBy(t -> t.createTime().desc())
.toList();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` ORDER BY `id` ASC,`create_time` DESC
<== Time Elapsed: 3(ms)
<== Total: 101
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> {
t.id().asc();
t.createTime().desc();
})
.toList();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` ORDER BY `id` ASC,`create_time` DESC
<== Time Elapsed: 3(ms)
<== Total: 101Dynamic Sorting
Object Mode
//Dynamic sorting
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> {
t.id().asc(false);//false means not effective
t.createTime().desc();
})
.toList();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` ORDER BY `create_time` DESC
<== Time Elapsed: 3(ms)
<== Total: 101If you want to implement frontend sorting, you can refer to this link DynamicSort
Function Sorting
Object Mode
//Function sorting
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> {
t.createTime().format("yyyy-MM-dd").desc();
})
.toList();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` ORDER BY DATE_FORMAT(`create_time`,'%Y-%m-%d') DESC
<== Time Elapsed: 11(ms)
<== Total: 101Null First/Last
Supports all databases, Oracle generates id asc nulls first
//nulls last/first
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> {
t.id().asc(OrderByModeEnum.NULLS_LAST);
t.createTime().desc(OrderByModeEnum.NULLS_FIRST);
})
.toList();
==> Preparing: SELECT `id`,`stars`,`title`,`create_time` FROM `t_topic` ORDER BY CASE WHEN `id` IS NULL THEN 1 ELSE 0 END ASC,`id` ASC,CASE WHEN `create_time` IS NULL THEN 0 ELSE 1 END ASC,`create_time` DESC
<== Time Elapsed: 5(ms)
<== Total: 101Custom Ascending/Descending
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> {
t.id().asc(false);//false means not effective
t.createTime().orderBy(true/false);//true/false indicates ascending/descending, not whether it's effective
})
.toList();
boolean asc=false;
OrderByModeEnum nullMode=OrderByModeEnum.NULLS_LAST;
List<Topic> list = easyEntityQuery.queryable(Topic.class)
.orderBy(t -> {
t.createTime().orderBy(asc,nullMode);//true/false indicates ascending/descending, not whether it's effective
})
.toList();