Class DefaultSqlServerSqlParser
java.lang.Object
org.miaixz.bus.pager.parser.defaults.DefaultSqlServerSqlParser
- All Implemented Interfaces:
SqlServerSqlParser
将sqlserver查询语句转换为分页语句 注意事项:
- 请先保证你的SQL可以执行
- sql中最好直接包含order by,可以自动从sql提取
- 如果没有order by,可以通过入参提供,但是需要自己保证正确
- 如果sql有order by,可以通过orderby参数覆盖sql中的order by
- order by的列名不能使用别名
- 表和列使用别名的时候不要使用单引号(')
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final String别名前缀protected static final String行号protected static final net.sf.jsqlparser.schema.Column行号列static final String结束行号static final net.sf.jsqlparser.expression.Alias别名protected static final String表别名名字static final String开始行号protected static final net.sf.jsqlparser.statement.select.TopTOP 100 PERCENTprotected static final String外层包装表 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected net.sf.jsqlparser.statement.select.SelectItem<?> addRowNumber(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, List<net.sf.jsqlparser.statement.select.SelectItem<?>> autoItems) 获取 ROW_NUMBER() 列protected net.sf.jsqlparser.statement.select.OrderByElementcloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, String alias) 复制 OrderByElementprotected net.sf.jsqlparser.statement.select.OrderByElementcloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, net.sf.jsqlparser.expression.Expression expression) 复制 OrderByElementconvertToPageSql(String sql) 转换为分页语句convertToPageSql(String sql, Integer offset, Integer limit) 转换为分页语句protected List<net.sf.jsqlparser.statement.select.OrderByElement> getOrderByElements(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, List<net.sf.jsqlparser.statement.select.SelectItem<?>> autoItems) 获取新的排序列表protected net.sf.jsqlparser.statement.select.SelectgetPageSelect(net.sf.jsqlparser.statement.select.Select select) 获取一个外层包装的TOP查询protected List<net.sf.jsqlparser.statement.select.SelectItem<?>> getSelectItems(net.sf.jsqlparser.statement.select.PlainSelect plainSelect) 获取查询列booleanisNotEmptyList(List<?> list) List不空protected voidprocessFromItem(net.sf.jsqlparser.statement.select.FromItem fromItem, int level) 处理子查询protected voidprocessPlainSelect(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, int level) 处理PlainSelect类型的selectprotected voidprocessSelectBody(net.sf.jsqlparser.statement.select.Select select, int level) 处理selectBody去除Order byprotected net.sf.jsqlparser.statement.select.SelectwrapSetOperationList(net.sf.jsqlparser.statement.select.SetOperationList setOperationList) 包装SetOperationList
-
Field Details
-
START_ROW
开始行号 -
PAGE_SIZE
结束行号 -
WRAP_TABLE
外层包装表- See Also:
-
PAGE_TABLE_NAME
表别名名字- See Also:
-
PAGE_TABLE_ALIAS
public static final net.sf.jsqlparser.expression.Alias PAGE_TABLE_ALIAS别名 -
PAGE_ROW_NUMBER
行号- See Also:
-
PAGE_ROW_NUMBER_COLUMN
protected static final net.sf.jsqlparser.schema.Column PAGE_ROW_NUMBER_COLUMN行号列 -
TOP100_PERCENT
protected static final net.sf.jsqlparser.statement.select.Top TOP100_PERCENTTOP 100 PERCENT -
PAGE_COLUMN_ALIAS_PREFIX
别名前缀- See Also:
-
-
Constructor Details
-
DefaultSqlServerSqlParser
public DefaultSqlServerSqlParser()
-
-
Method Details
-
convertToPageSql
转换为分页语句- Parameters:
sql- sql- Returns:
- the string
-
convertToPageSql
转换为分页语句- Specified by:
convertToPageSqlin interfaceSqlServerSqlParser- Parameters:
sql- sqloffset- 开始位置limit- 结束位置- Returns:
- the string
-
getPageSelect
protected net.sf.jsqlparser.statement.select.Select getPageSelect(net.sf.jsqlparser.statement.select.Select select) 获取一个外层包装的TOP查询- Parameters:
select- Select- Returns:
- the select
-
wrapSetOperationList
protected net.sf.jsqlparser.statement.select.Select wrapSetOperationList(net.sf.jsqlparser.statement.select.SetOperationList setOperationList) 包装SetOperationList- Parameters:
setOperationList- SetOperationList- Returns:
- the select
-
getSelectItems
protected List<net.sf.jsqlparser.statement.select.SelectItem<?>> getSelectItems(net.sf.jsqlparser.statement.select.PlainSelect plainSelect) 获取查询列- Parameters:
plainSelect- PlainSelect- Returns:
- the list
-
addRowNumber
protected net.sf.jsqlparser.statement.select.SelectItem<?> addRowNumber(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, List<net.sf.jsqlparser.statement.select.SelectItem<?>> autoItems) 获取 ROW_NUMBER() 列- Parameters:
plainSelect- 原查询autoItems- 自动生成的查询列- Returns:
- ROW_NUMBER() 列
-
processSelectBody
protected void processSelectBody(net.sf.jsqlparser.statement.select.Select select, int level) 处理selectBody去除Order by- Parameters:
select- 查询level- int
-
processPlainSelect
protected void processPlainSelect(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, int level) 处理PlainSelect类型的select- Parameters:
plainSelect- 查询level- int
-
processFromItem
protected void processFromItem(net.sf.jsqlparser.statement.select.FromItem fromItem, int level) 处理子查询- Parameters:
fromItem- FromItemlevel- int
-
isNotEmptyList
List不空- Parameters:
list- 集合- Returns:
- the boolean
-
cloneOrderByElement
protected net.sf.jsqlparser.statement.select.OrderByElement cloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, String alias) 复制 OrderByElement- Parameters:
orig- 原 OrderByElementalias- 新 OrderByElement 的排序要素- Returns:
- 复制的新 OrderByElement
-
cloneOrderByElement
protected net.sf.jsqlparser.statement.select.OrderByElement cloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, net.sf.jsqlparser.expression.Expression expression) 复制 OrderByElement- Parameters:
orig- 原 OrderByElementexpression- 新 OrderByElement 的排序要素- Returns:
- 复制的新 OrderByElement
-
getOrderByElements
protected List<net.sf.jsqlparser.statement.select.OrderByElement> getOrderByElements(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, List<net.sf.jsqlparser.statement.select.SelectItem<?>> autoItems) 获取新的排序列表- Parameters:
plainSelect- 原始查询autoItems- 生成的新查询要素- Returns:
- 新的排序列表
-