分页排序

查询对象需要继承PageQuery类以构造分页子句和排序子句。PageQuery类定义了相关字段用于支持对应的功能。其中,pageNumberpageSize用于构建分页子句,sort 用于构建排序子句。

示例

定义

@Getter
@Setter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class UserQuery extends PageQuery {
    private Long idGt;
    //...
}

分页

代码调用:

UserQuery userQuery = UserQuery.builder().build();
List<UserEntity> users = userDataAccess.query(userQuery);
//SELECT id, score, memo FROM User

UserQuery userQuery = UserQuery.builder().pageSize(20).build();
List<UserEntity> users = userDataAccess.query(userQuery);
//SELECT id, score, memo FROM User LIMIT 20 OFFSET 0

// When only PageNumber is set, PageSize will be set to 10
UserQuery userQuery = UserQuery.builder().pageNumber(5).build();
List<UserEntity> users = userDataAccess.query(userQuery);
//SELECT id, score, memo FROM User LIMIT 10 OFFSET 40

UserQuery userQuery = UserQuery.builder().pageNumber(3).pageSize(50).build();
List<UserEntity> users = userDataAccess.query(userQuery);
//SELECT id, score, memo FROM User LIMIT 10 OFFSET 100	

Web调用:

http://localhost:8080/user/?pageNumber=2&pageSize=20

排序

代码调用:

UserQuery userQuery = UserQuery.builder().sort("id,desc;score,asc;memo").build();
List<UserEntity> users = userDataAccess.query(userQuery);
//SELECT id, score, memo FROM User ORDER BY id DESC, score ASC, memo

赋值给sort字段的字符串需要符合正则表达式:PageQuery.SORT_PTN。

Web调用:

http://localhost:8080/user/?sort=id,desc
http://localhost:8080/user/?sort=memo,desc;email,desc

最后更新于

这有帮助吗?