CCJSqlParserUtil ——SQL语法解释器
原创
©著作权归作者所有:来自51CTO博客作者IT枫斗者的原创作品,请联系作者获取转载授权,否则将追究法律责任
CCJSqlParserUtil ——SQL语法解释器
SQL解析样例
简单的语句解析
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语句的叙述整体。
简单的表达式解析
//表达式
Expression expression = CCJSqlParserUtil.parseExpression("a+b*c");
//条件表达式
Expression expression = CCJSqlParserUtil.parseCondExpression("A='123'");
从SQL中提取表名
String sql = "SELECT * FROM TABLE1";
Statement statement = CCJSqlParserUtil.parse(sql);
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
List<String> tableList = tablesNamesFinder.getTableList(statement);
-
TablesNamesFinder
类可以提取Statement
类中的表名列表。
将别名应用于所有表达式
Select select = (Select) CCJSqlParserUtil.parse("SELECT A,B,C FROM TABLE1");//此处的运行时类是Select
SelectBody selectBody = select.getSelectBody();
AddAliasesVisitor addAliasesVisitor = new AddAliasesVisitor();
addAliasesVisitor.setPrefix("B");//设置前缀(如不进行设置默认为“A”)
selectBody.accept(addAliasesVisitor);
System.out.println(selectBody.toString());//SELECT A AS B1, B AS B2, C AS B3 FROM TABLE1
向SELECT添加一列或表达式
Select select = (Select) CCJSqlParserUtil.parse("SELECT A FROM TABLE1");
SelectUtils.addExpression(select, new Column("B"));
System.out.println(select);//SELECT A, B FROM TABLE1
- 其中
Column
类代表列,SelectUtils
类是SELECT语句工具类。