jsqlParser例子(二)join

一、获取连接的表名及字段

public void testParseJoin(){
        String sql = "select *from A as a left join B on a.bid = B.id left join C on A.cid = C.id left join D on B.did = D.id";
        try {
            Select select = (Select)CCJSqlParserUtil.parse(sql);
            SelectBody selectBody = select.getSelectBody();
            PlainSelect plainSelect = (PlainSelect)selectBody;
            List<Join> joins = plainSelect.getJoins();
            for(Join join : joins){
                EqualsTo equalsTo = (EqualsTo)join.getOnExpression();
                Column leftExpression = (Column)equalsTo.getLeftExpression();
                Column rightExpression = (Column)equalsTo.getRightExpression();

                System.out.println("left table name:"+leftExpression.getTable());
                System.out.println("left table field:"+leftExpression.getColumnName());
                System.out.println("right table name:"+rightExpression.getTable());
                System.out.println("right table field:"+rightExpression.getColumnName());
                System.out.println("---------------------");
            }

        } catch (JSQLParserException e) {
            e.printStackTrace();
        }

    }

输出结果为:

left table name:a
left table field:bid
right table name:B
right table field:id
---------------------
left table name:A
left table field:cid
right table name:C
right table field:id
---------------------
left table name:B
left table field:did
right table name:D
right table field:id
---------------------

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
net.sf.jsqlparser是一个Java语言编写的SQL解析器,可以用来解析SQL语句中的各种关键字,包括join关键字。 下面是一个例子: 假设有以下两个表: ``` CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `product` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 现在需要查询用户和他们的订单信息,可以使用以下SQL语句: ``` SELECT u.name, o.product FROM `user` u JOIN `order` o ON u.id = o.user_id; ``` net.sf.jsqlparser可以解析以上SQL语句,将其拆分成多个对象,分别表示SELECT、FROM、JOIN等关键字。其中,JOIN关键字可以通过Join类来表示,可以通过以下代码获取JOIN关键字的相关信息: ```java String sql = "SELECT u.name, o.product FROM `user` u JOIN `order` o ON u.id = o.user_id"; CCJSqlParserManager parser = new CCJSqlParserManager(); Select select = (Select) parser.parse(new StringReader(sql)); PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); Join join = (Join) plainSelect.getJoins().get(0); Table rightTable = (Table) join.getRightItem(); Expression onExpression = join.getOnExpression(); ``` 其中,rightTable表示JOIN关键字右侧的表(即订单表),onExpression表示JOIN条件(即用户ID等于订单中的用户ID)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值