jsqlParser(三)获取表别名

获取连接表的名称及别名,不支持复杂的子查询:

// 获取表及对应的别名
    public void testParseAlias(){
        Map<String,String> map = new HashMap<>();
        String sql = "select *from A as a left join B b on a.bid = B.id left join C on A.cid = C.id and A.m = 3 left join D on B.did = D.id where a.id = 23 or b.id = 34 or c.id = 54";
        try {
            Select select = (Select)CCJSqlParserUtil.parse(sql);
            SelectBody selectBody = select.getSelectBody();
            PlainSelect plainSelect = (PlainSelect)selectBody;
            Table table = (Table)plainSelect.getFromItem();
            if(table.getAlias() != null){
                map.put(table.getAlias().getName(),table.getName());
            }

            for(Join join : plainSelect.getJoins()){
                Table table1 = (Table)join.getRightItem();
                if(table1.getAlias()!=null){
                    map.put(table1.getAlias().getName(),table1.getName());
                }
            }
            System.out.println(map);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

输出结果为:

{a=A, b=B}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值