SpSortSqlGenerator
大约 2 分钟
排序 sql 生成器,利用 SpSortParam
来生成一个排序 sql 语句。可以使用单例模式。可以直接配合前端组件 SpPaginationTable 来快速实现排序功能。
基础用法
- 要在 VO 中加入
SpSortParam
对象用来接收排序信息。 SpSortParam
属性名一定要为sort
,因为在SpPaginationTable
组件中使用了这个属性名。- 在要使用的地方创建一个单例,一般在自定义 sql 类中。
- 使用
SpSortSqlColumn
来配置属性关系。 - 需要传入
appendOrderBy
排序内容,比如id ASC
。 - 如果查询多张表,那么可以使用别名来处理。
重要
写在 VO
中的 SpSortParam
属性名一定要为 sort
,因为在 SpPaginationTable
组件中使用了这个属性名。
public class MaterialTransferPageVO {
/**
* 排序方式
**/
private SpSortParam sort;
}
下面是一个使用了别名,并且需要默认排序的例子:
public class StorageTransferProvider {
private static final SpSortSqlGenerator QUERY__SORT_SQL_GENERATOR = SpSortSqlGenerator.getInstance(
"st.create_time DESC", "st.id ASC",
new SpSortSqlColumn("transferCode", "st.transfer_code"),
new SpSortSqlColumn("transferTime", "st.transfer_time"),
new SpSortSqlColumn("createTime", "st.create_time")
);
public String query(TransferMaterialPageQuery query) {
StringBuilder sql = new StringBuilder("""
SELECT
*
FROM
erp_storage_transfer st
""");
sql.append(QUERY__SORT_SQL_GENERATOR.toSql(param.getSort()));
return sql.toString();
}
}
API
SpSortSqlGenerator
getInstance
参数名 | 类型 | 描述 |
---|---|---|
defaultOrderBy | String | 默认排序语句,当没有命中任何排序规则时使用排序语句,可以为空。例如:crate_time DESC |
appendOrderBy | String | 补充排序语句,建议为 id ASC ,这个一定会拼接到排序中。主要是为了防止当排序的字段没有唯一性时导致分页查询遗漏数据。 |
columns | SpSortSqlColumn... | 排序列的配置 |
SpSortSqlColumn
属性名 与 数据库名对应关系。
属性名 | 类型 | 描述 |
---|---|---|
columnName | String | 属性名,前端传过来需要排序的字段名。如 createTime |
dbColumnName | String | 对应的数据库字段名,如果表名使用了别名,需要添加别名。如 st.create_time |