最近做项目时,用到了jsqlParser这个sql解析工具类,简单记录一下他的用法。
SQL解析样例
1.简单的语句解析
1、 单个语句
String sql = "SELECT * FROM TABLE1";
//方法1
Statement statement = CCJSqlParserUtil.parse(sql);
//方法2
CCJSqlParser ccjSqlParser = new CCJSqlParser(sql);
Statement statement = ccjSqlParser.Statement();
多个语句
String sqls = "SELECT * FROM TABLE1;SELECT * FROM TABLE2";
//方法1
Statements statements = CCJSqlParserUtil.parseStatements(sqls);
//方法2
CCJSqlParser ccjSqlParser = new CCJSqlParser(sqls);
Statements statements = ccjSqlParser.Statements();
List<Statement> statementList = statements.getStatements();
Statement类代表SQL语句的叙述整体。
1、 简单的表达式解析
//表达式
Expression expression = CCJSqlParserUtil.parseExpression("a+b*c");
//条件表达式
Expression expression = CCJSqlParserUtil.parseCondExpression("A='123'");
Expression类代表表达式。
1、 从SQL中提取表名
String sql = "SELECT * FROM TABLE1";
Statement statement = CCJSqlParserUtil.parse(sql);
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
List<String> tableList = tablesNamesFinder.getTableList(statement);
TablesNamesFinder类可以提取Statement类中的表名列表。