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 |