JSqlParser实现从sql语句中提取出表名和字段名
时间: 2024-03-06 19:50:10 浏览: 287
selectparser:从SQL语句获取表
使用 JSqlParser 可以很方便地从 SQL 语句中提取表名和字段名。以下是一个简单的 Java 代码示例,可以从 SQL 语句中提取出表名和所有字段名:
```java
import java.util.List;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectBody;
import net.sf.jsqlparser.statement.select.SelectItem;
import net.sf.jsqlparser.statement.select.SelectVisitorAdapter;
public class TableAndColumnExtractor {
public static void main(String[] args) throws JSQLParserException {
String sql = "SELECT a.id, a.name, b.age FROM table1 a, table2 b WHERE a.id = b.id";
Statement statement = CCJSqlParserUtil.parse(sql);
Select select = (Select) statement;
SelectBody selectBody = select.getSelectBody();
selectBody.accept(new SelectVisitorAdapter() {
@Override
public void visit(PlainSelect plainSelect) {
List<SelectItem> selectItems = plainSelect.getSelectItems();
for (SelectItem selectItem : selectItems) {
selectItem.getExpression().accept(new SelectVisitorAdapter() {
@Override
public void visit(Column column) {
System.out.println("Column name: " + column.getColumnName());
}
});
}
Table table = (Table) plainSelect.getFromItem();
System.out.println("Table name: " + table.getName());
}
});
}
}
```
在上面的代码中,我们首先将 SQL 语句解析为一个 Statement 对象,然后获取其中的 Select 对象和 SelectBody 对象。接着,我们使用 SelectVisitorAdapter 类访问 SelectBody 对象,从中提取出表名和字段名。最后,我们打印出了所有的字段名和表名。
需要注意的是,JSqlParser 还支持其他类型的 SQL 语句,例如 INSERT、UPDATE 和 DELETE,您可以根据需要进行调整。
阅读全文