类 SqlServerParser

java.lang.Object
gu.sql2java.parser.SqlServerParser

public class SqlServerParser extends Object
将sqlserver查询语句转换为分页语句
注意事项:
  1. 请先保证你的SQL可以执行
  2. sql中最好直接包含order by,可以自动从sql提取
  3. 如果没有order by,可以通过入参提供,但是需要自己保证正确
  4. 如果sql有order by,可以通过orderby参数覆盖sql中的order by
  5. order by的列名不能使用别名
  6. 表和列使用别名的时候不要使用单引号(')
该类设计为一个独立的工具类,依赖jsqlparser,可以独立使用
作者:
liuzh
  • 字段概要

    字段
    修饰符和类型
    字段
    说明
    protected 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.Top
     
    protected static final String
     
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    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() 列
    protected net.sf.jsqlparser.statement.select.OrderByElement
    cloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, String alias)
    复制 OrderByElement
    protected net.sf.jsqlparser.statement.select.OrderByElement
    cloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, net.sf.jsqlparser.expression.Expression expression)
    复制 OrderByElement
    转换为分页语句
    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.Select
    getPageSelect(net.sf.jsqlparser.statement.select.Select select)
    获取一个外层包装的TOP查询
    protected List<net.sf.jsqlparser.statement.select.SelectItem>
    getSelectItems(net.sf.jsqlparser.statement.select.PlainSelect plainSelect)
    获取查询列
    boolean
    List不空
    protected void
    processFromItem(net.sf.jsqlparser.statement.select.FromItem fromItem, int level)
    处理子查询
    protected void
    processPlainSelect(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, int level)
    处理PlainSelect类型的selectBody
    protected void
    processSelectBody(net.sf.jsqlparser.statement.select.SelectBody selectBody, int level)
    处理selectBody去除Order by
    protected net.sf.jsqlparser.statement.select.SelectBody
    wrapSetOperationList(net.sf.jsqlparser.statement.select.SetOperationList setOperationList)
    包装SetOperationList

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细资料

    • START_ROW

      public static final String START_ROW
    • PAGE_SIZE

      public static final String PAGE_SIZE
    • WRAP_TABLE

      protected static final String WRAP_TABLE
      另请参阅:
    • PAGE_TABLE_NAME

      protected static final String PAGE_TABLE_NAME
      另请参阅:
    • PAGE_TABLE_ALIAS

      public static final net.sf.jsqlparser.expression.Alias PAGE_TABLE_ALIAS
    • PAGE_ROW_NUMBER

      protected static final String PAGE_ROW_NUMBER
      另请参阅:
    • 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_PERCENT
    • PAGE_COLUMN_ALIAS_PREFIX

      protected static final String PAGE_COLUMN_ALIAS_PREFIX
      另请参阅:
  • 构造器详细资料

    • SqlServerParser

      public SqlServerParser()
  • 方法详细资料

    • convertToPageSql

      public String convertToPageSql(String sql)
      转换为分页语句
      参数:
      sql -
    • convertToPageSql

      public String convertToPageSql(String sql, Integer offset, Integer limit)
      转换为分页语句
      参数:
      sql -
      offset -
      limit -
    • getPageSelect

      protected net.sf.jsqlparser.statement.select.Select getPageSelect(net.sf.jsqlparser.statement.select.Select select)
      获取一个外层包装的TOP查询
      参数:
      select -
    • wrapSetOperationList

      protected net.sf.jsqlparser.statement.select.SelectBody wrapSetOperationList(net.sf.jsqlparser.statement.select.SetOperationList setOperationList)
      包装SetOperationList
      参数:
      setOperationList -
    • getSelectItems

      protected List<net.sf.jsqlparser.statement.select.SelectItem> getSelectItems(net.sf.jsqlparser.statement.select.PlainSelect plainSelect)
      获取查询列
      参数:
      plainSelect -
    • 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() 列
      参数:
      plainSelect - 原查询
      autoItems - 自动生成的查询列
      返回:
      ROW_NUMBER() 列
    • processSelectBody

      protected void processSelectBody(net.sf.jsqlparser.statement.select.SelectBody selectBody, int level)
      处理selectBody去除Order by
      参数:
      selectBody -
    • processPlainSelect

      protected void processPlainSelect(net.sf.jsqlparser.statement.select.PlainSelect plainSelect, int level)
      处理PlainSelect类型的selectBody
      参数:
      plainSelect -
    • processFromItem

      protected void processFromItem(net.sf.jsqlparser.statement.select.FromItem fromItem, int level)
      处理子查询
      参数:
      fromItem -
    • isNotEmptyList

      public boolean isNotEmptyList(List<?> list)
      List不空
      参数:
      list -
    • cloneOrderByElement

      protected net.sf.jsqlparser.statement.select.OrderByElement cloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, String alias)
      复制 OrderByElement
      参数:
      orig - 原 OrderByElement
      alias - 新 OrderByElement 的排序要素
      返回:
      复制的新 OrderByElement
    • cloneOrderByElement

      protected net.sf.jsqlparser.statement.select.OrderByElement cloneOrderByElement(net.sf.jsqlparser.statement.select.OrderByElement orig, net.sf.jsqlparser.expression.Expression expression)
      复制 OrderByElement
      参数:
      orig - 原 OrderByElement
      expression - 新 OrderByElement 的排序要素
      返回:
      复制的新 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)
      获取新的排序列表
      参数:
      plainSelect - 原始查询
      autoItems - 生成的新查询要素
      返回:
      新的排序列表