List<Map> columns = new ArrayList<>();
List<Map> alias = new ArrayList<>();
String sql = "";
SQLStatementParser parser = new MySqlStatementParser(sql);
SQLStatement statement = parser.parseStatement();
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
statement.accept(visitor);
Collection<Column> columns = visitor.getColumns();
List<SQLSelectItem> list = ((MySqlSelectQueryBlock) ((SQLSelect) ((SQLSelectStatement) statement)
.getSelect()).getQuery()).getSelectList();
for (SQLSelectItem item : list) {
String alias_field = item.getAlias();
Object obj = item.getExpr();
if(obj instanceof SQLPropertyExpr) {
SQLPropertyExpr expr = (SQLPropertyExpr)obj;
Map p = new HashMap<>();
p.put("field", expr.getName());
p.put("table_name",expr.getResolvedTableSource().toString() );
p.put("table_alias", expr.getResolvedTableSource().getAlias());
columns.add(p);
}
if(obj instanceof SQLQueryExpr) {//别名
SQLQueryExpr expr = (SQLQueryExpr)obj;
Map p = new HashMap<>();
p.put("field", alias_field);
alias.add(p);
}
}
其中columns是关联的表名的字段,alias则是子查询或其他的别名的集合