简介
sybn dao 收到 sql 语句之后, 需要先将其转换为 AST 语法树, 然后再将其中的各个节点分别处理.
本工具包的 AST 语法树为半理解解析模式, 对于解析器,转换器,执行器会各自分别检查不合法 sql.
SQL语法树结构简图
主要节点说明
- 语法树节点分为 树节点 和 页节点
树节点
-
JOIN 查询 SubJoinQueryEntity
-
union 聚合查询 SySqlUnionEntity
-
多表查询 MultipleSqlEntity 支持 from 和 where 子查询,
页节点
- 单表查询 SimpleSqlEntity 等是类型, 仅查询单表, 实际分发给各个数据库的是这个类
实际执行
-
SqlDdlDaoMultipleImpl 负责所有类型的查询, 并将子查询分发给不同的 dao
-
各个数据库的 dao (sql/mongo/solr/elastic/hbase) 都直接支持执行 SimpleSqlEntity
-
mongo dao 支持直接执行带有 from 子查询的 MultipleSqlEntity, 但是不支持 where 子查询