首页 > 其他分享 >test4

test4

时间:2023-06-21 11:11:43浏览次数:29  
标签:test4 List jsqlparser tableNames import net sf

import net.sf.jsqlparser.parser.CCJSqlParserUtil;
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.util.TablesNamesFinder;
import net.sf.jsqlparser.visitor.StatementVisitorAdapter;

import java.util.ArrayList;
import java.util.List;

public class StoredProcParserExample {
    public static void main(String[] args) {
        String storedProcDefinition = "CREATE PROCEDURE `get_products`()\n" +
                "BEGIN\n" +
                "    SELECT * FROM products WHERE price > 100;\n" +
                "END";

        try {
            // 解析存储过程定义
            Statement stmt = CCJSqlParserUtil.parse(storedProcDefinition);

            // 自定义Visitor来提取表名
            TablesNamesVisitor visitor = new TablesNamesVisitor();
            stmt.accept(visitor);
            List<String> tableNames = visitor.getTableNames();

            // 打印表名
            for (String tableName : tableNames) {
                System.out.println("Table: " + tableName);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    static class TablesNamesVisitor extends StatementVisitorAdapter {
        private List<String> tableNames = new ArrayList<>();

        public List<String> getTableNames() {
            return tableNames;
        }

        @Override
        public void visit(PlainSelect plainSelect) {
            TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
            List<Table> tables = tablesNamesFinder.getTableList(plainSelect);
            for (Table table : tables) {
                tableNames.add(table.getFullyQualifiedName());
            }
        }
    }
}

 

标签:test4,List,jsqlparser,tableNames,import,net,sf
From: https://www.cnblogs.com/wanglichaoya/p/17495772.html

相关文章

  • test4
    test3Markdown示例文件这是一个加粗的文本。这是一个斜体的文本。这是一个删除线的文本。标题H1标题H2标题H3标题H4标题H5标题H6这是一个引用。这是一个内联代码文本。print("这是一个代码块")列表项1列表项2列表项3有序列表项1有序列表项2......
  • test4
    test3Markdown示例文件这是一个加粗的文本。这是一个斜体的文本。这是一个删除线的文本。标题H1标题H2标题H3标题H4标题H5标题H6这是一个引用。这是一......