public static SchemaItem parse(String sql) {
        try {
            SQLStatementParser parser = new MySqlStatementParser(sql);
            SQLSelectStatement statement = (SQLSelectStatement) parser.parseStatement();
            MySqlSelectQueryBlock sqlSelectQueryBlock = (MySqlSelectQueryBlock) statement.getSelect().getQuery();

            SchemaItem schemaItem = new SchemaItem();
            schemaItem.setSql(SQLUtils.toMySqlString(sqlSelectQueryBlock));
            SQLTableSource sqlTableSource = sqlSelectQueryBlock.getFrom();
            List<TableItem> tableItems = new ArrayList<>();
            SqlParser.visitSelectTable(schemaItem, sqlTableSource, tableItems, null);
            tableItems.forEach(tableItem -> schemaItem.getAliasTableItems().put(tableItem.getAlias(), tableItem));

            List<FieldItem> fieldItems = collectSelectQueryFields(sqlSelectQueryBlock);
            fieldItems.forEach(fieldItem -> schemaItem.getSelectFields().put(fieldItem.getFieldName(), fieldItem));

            schemaItem.init();

            if (schemaItem.getAliasTableItems().isEmpty() || schemaItem.getSelectFields().isEmpty()) {
                throw new ParserException("Parse sql error");
            }
            return schemaItem;
        } catch (Exception e) {
            throw new ParserException();
        }
    }
public static SchemaItem parse ( String sql ) { try { SQLStatementParser parser = new MySqlStatementParser ( sql ) ; SQLSelectStatement statement = ( SQLSelectStatement ) parser . parseStatement ( ) ; MySqlSelectQueryBlock sqlSelectQueryBlock = ( MySqlSelectQueryBlock ) statement . getSelect ( ) . getQuery ( ) ; SchemaItem schemaItem = new SchemaItem ( ) ; schemaItem . setSql ( SQLUtils . toMySqlString ( sqlSelectQueryBlock ) ) ; SQLTableSource sqlTableSource = sqlSelectQueryBlock . getFrom ( ) ; List < TableItem > tableItems = new ArrayList < > ( ) ; SqlParser . visitSelectTable ( schemaItem , sqlTableSource , tableItems , null ) ; tableItems . forEach ( tableItem -> schemaItem . getAliasTableItems ( ) . put ( tableItem . getAlias ( ) , tableItem ) ) ; List < FieldItem > fieldItems = collectSelectQueryFields ( sqlSelectQueryBlock ) ; fieldItems . forEach ( fieldItem -> schemaItem . getSelectFields ( ) . put ( fieldItem . getFieldName ( ) , fieldItem ) ) ; schemaItem . init ( ) ; if ( schemaItem . getAliasTableItems ( ) . isEmpty ( ) || schemaItem . getSelectFields ( ) . isEmpty ( ) ) { throw new ParserException ( "Parse sql error" ) ; } return schemaItem ; } catch ( Exception e ) { throw new ParserException ( ) ; } }
解析sql

@param sql sql
@return 视图对象