CCJSqlParserUtil ——SQL语法解释器

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'");

  • Expression类代表表达式。

从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语句工具类。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT枫斗者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值