• Atitit jpql ast总结v2 t025.docx 目录 1.1. 多select字段 1 1.2. 多个and条件 (ok) 2 1.3. Select 字段函数(聚合等) 2 1.4. [


    Atitit jpql ast总结v2 t025.docx

    目录

    1.1. 多select字段 1

    1.2. 多个and条件 (ok) 2

    1.3. Select 字段函数(聚合等) 2

    1.4. [ORDER BY 子句] 排序 2

    1.5. 翻页语句  貌似不支持 3

    1.6. 运算符 》  《  》  like 3

    2. 相对复杂的表达式 4

    2.1. 别名 as  (实现解析) 4

    2.2. JOIN关键字可以省略,上式等同於: 5

    2.3. HAVING 子句 5

    2.4. Select 聚合函数 (实现解析) 5

    2.5. Udf (实现解析) 6

    2.6. Groupby (实现了) 8

     

     

      1. 多select字段

     

     

    -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     -[IDENT] Node: 'u5b57u6bb53'

        -[WHERE] Node: 'where'

           -[EQ] Node: '='

              +-[IDENT] Node: 'u5b57u6bb51'

              -[NUM_INT] Node: '123'

    SELECT * FROM 字段3 WHERE 字段1 = 123

     

      1. 多个and条件 (ok)
      2. Select 字段函数(聚合等)
      3.  [ORDER BY 子句] 排序

    jpql = "select a,b from 表格1 where c=123  and d =456   order by c1 desc ,c2 ,c3 desc";

     

    多个orderby

     

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           +-[DESCENDING] Node: 'desc'

           +-[IDENT] Node: 'c2'

           +-[IDENT] Node: 'c3'

           -[DESCENDING] Node: 'desc'

     

     

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     -[IDENT] Node: 'u5b57u6bb53'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           -[IDENT] Node: 'c1'

     

     

     

     -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     -[IDENT] Node: 'u5b57u6bb53'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           -[DESCENDING] Node: 'desc'

     

     

     

     

     

     

      1. 翻页语句  貌似不支持

     

    直接后面耕者mysql 翻页表达式得了

     

     

    System.out.println(JqplUtil.Jqpl2sql(hql,"limit 1"));

     

      1. 运算符 》  《  》  like

     

     其中IN中指定的,就是群集成员路径表示,而>、<、AND、IN、LIKE等都是WHERE子句中条件表示式,简单列出一些条件表示式如下:

    比较陈述

    =、>、>=、<、<=、<>

    BETWEEN 陈述

    [NOT BETWEEN

    LIKE 陈述

    [NOT] LIKE

    IN 陈述

    [NOT] IN

    NULL 陈述

    IS [NOT] NULL

    EMPTY 陈述

    IS [NOT] EMPTY

    EXISTS 陈述

    [NOT] EXISTS

     

     

    1. 相对复杂的表达式
      1. 别名 as  (实现解析)

     

     -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     +-[IDENT] Node: 'u5b57u6bb53'

        |     +-[AS] Node: 'as'

        |     |  +-[AGGREGATE] Node: 'sum'

        |     |  |  -[IDENT] Node: 'id'

        |     |  -[IDENT] Node: 'idAlias1'

        |     +-[AS] Node: 'as'

        |     |  +-[METHOD_CALL] Node: '('

        |     |  |  +-[IDENT] Node: 'kk'

        |     |  |  -[EXPR_LIST] Node: 'exprList'

        |     |  |     -[NUM_INT] Node: '5'

        |     |  -[IDENT] Node: 'alias2'

        |     -[COUNT] Node: 'count'

        |        -[ROW_STAR] Node: '*'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           -[DESCENDING] Node: 'desc'

     

     

     

    -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     +-[IDENT] Node: 'u5b57u6bb53'

        |     +-[AGGREGATE] Node: 'sum'

        |     |  -[IDENT] Node: 'id'

        |     +-[AS] Node: 'as'

        |     |  +-[METHOD_CALL] Node: '('

        |     |  |  +-[IDENT] Node: 'kk'

        |     |  |  -[EXPR_LIST] Node: 'exprList'

        |     |  |     -[NUM_INT] Node: '5'

        |     |  -[IDENT] Node: 'alias2'

        |     -[COUNT] Node: 'count'

        |        -[ROW_STAR] Node: '*'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           -[DESCENDING] Node: 'desc'

    Exception in thread "main" java.lang.ClassCastExcepti

     

      1. JOIN关键字可以省略,上式等同於:
      2. HAVING 子句
      3. Select 聚合函数 (实现解析)

     

     

     -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     -[AGGREGATE] Node: 'sum'

        |        -[IDENT] Node: 'u6570u91cf'

        -[WHERE] Node: 'where'

           -[EQ] Node: '='

              +-[IDENT] Node: 'u5b57u6bb51'

              -[NUM_INT] Node: '123'

     

     

     

     -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     +-[IDENT] Node: 'u5b57u6bb53'

        |     +-[AGGREGATE] Node: 'sum'

        |     |  -[IDENT] Node: 'id'

        |     +-[AS] Node: 'as'

        |     |  +-[METHOD_CALL] Node: '('

        |     |  |  +-[IDENT] Node: 'kk'

        |     |  |  -[EXPR_LIST] Node: 'exprList'

        |     |  |     -[NUM_INT] Node: '5'

        |     |  -[IDENT] Node: 'alias2'

        |     -[COUNT] Node: 'count'

        |        -[ROW_STAR] Node: '*'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           -[DESCENDING] Node: 'desc'

     

     

      1. Udf (实现解析)

     

     

     -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     +-[IDENT] Node: 'u5b57u6bb53'

        |     +-[AGGREGATE] Node: 'sum'

        |     |  -[IDENT] Node: 'id'

        |     +-[AS] Node: 'as'

        |     |  +-[COUNT] Node: 'count'

        |     |  |  -[ROW_STAR] Node: '*'

        |     |  -[IDENT] Node: 'cntAlias'

        |     -[AS] Node: 'as'

        |        +-[METHOD_CALL] Node: '('

        |        |  +-[IDENT] Node: 'Udf'

        |        |  -[EXPR_LIST] Node: 'exprList'

        |        |     -[IDENT] Node: 'c11'

        |        -[IDENT] Node: 'udfC11As'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           -[DESCENDING] Node: 'desc'

     

     

     -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     +-[IDENT] Node: 'u5b57u6bb53'

        |     +-[AGGREGATE] Node: 'sum'

        |     |  -[IDENT] Node: 'id'

        |     +-[AS] Node: 'as'

        |     |  +-[COUNT] Node: 'count'

        |     |  |  -[ROW_STAR] Node: '*'

        |     |  -[IDENT] Node: 'cntAlias'

        |     -[METHOD_CALL] Node: '('

        |        +-[IDENT] Node: 'Udf'

        |        -[EXPR_LIST] Node: 'exprList'

        |           -[IDENT] Node: 'c11'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           -[DESCENDING] Node: 'desc'

    Dbg

     

     

     

    -[QUERY] Node: 'query'

        +-[SELECT_FROM] Node: 'SELECT_FROM'

        |  +-[FROM] Node: 'from'

        |  |  -[RANGE] Node: 'RANGE'

        |  |     -[IDENT] Node: 'u8868u683c1'

        |  -[SELECT] Node: 'select'

        |     +-[IDENT] Node: 'u5b57u6bb52'

        |     +-[IDENT] Node: 'u5b57u6bb53'

        |     +-[AGGREGATE] Node: 'sum'

        |     |  -[IDENT] Node: 'id'

        |     +-[AS] Node: 'as'

        |     |  +-[COUNT] Node: 'count'

        |     |  |  -[ROW_STAR] Node: '*'

        |     |  -[IDENT] Node: 'cntAlias'

        |     -[METHOD_CALL] Node: '('

        |        +-[IDENT] Node: 'Udf'

        |        -[EXPR_LIST] Node: 'exprList'

        |           -[IDENT] Node: 'c11'

        +-[WHERE] Node: 'where'

        |  -[EQ] Node: '='

        |     +-[IDENT] Node: 'u5b57u6bb51'

        |     -[NUM_INT] Node: '123'

        -[ORDER] Node: 'order'

           +-[IDENT] Node: 'c1'

           -[DESCENDING] Node: 'desc'

      1. Groupby (实现了)

    Atitit 不错的ql选型 jpql

    Atitit 常见数据查询语言 GraphQL  sql

  • 相关阅读:
    C语言学习之指针
    IT人和普洱茶
    茶如人生 你是什么茶?
    普洱茶的冲泡技巧
    普洱茶保健功效
    廖雪峰Python总结3
    廖雪峰Python总结2
    Linux之软件包安装管理
    Linux常用命令6 关机重启命令
    Linux之Vim编辑器
  • 原文地址:https://www.cnblogs.com/attilax/p/15197020.html
Copyright © 2020-2023  润新知