jsqlParser(三)获取表别名

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

// 获取表及对应的别名
    public void testParseAlias(){
        Map 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}

你可能感兴趣的:(jsqlParser(三)获取表别名)