# SqlCater **Repository Path**: xymtop/SqlCater ## Basic Information - **Project Name**: SqlCater - **Description**: SqlCater,简简单单的SQL生成器 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 0 - **Created**: 2023-02-02 - **Last Updated**: 2025-08-29 ## Categories & Tags **Categories**: database-dev **Tags**: None ## README # SqlCater ## 介绍 SqlCater,简简单单的SQL生成器 ## 使用说明 > 相互转换命令 ```sh //如果传入路径为文件类型,就只解析该文件,如果是文件夹类型就解析文件夹下面的所有文件 //自动判断是否为思维导图类型,用户无需关心传入的类型 java -jar SqlCater build 文件或者文件夹路径 ``` > 命令行界面 ```sh //执行下面命令即可启动 java -jar SqlCater run ``` ## 目前支持的转换类型 > json 转 JSON 调用树 > json 转 Xmind 调用树 > json 转 SQL 语句 > json 转 Xmind节点思维导图 > Xmind节点思维导图 转 JSON 调用树 > Xmind节点思维导图 转 Xmind 调用树 > Xmind节点思维导图 转 SQL 语句 > Xmind节点思维导图 转 JSON > SQL节点对象转SQL > SQL上下文对象转SQL > SQL上下文对象转JSON > SQL上下文对象转调用树JSON > SQL上下文对象转SQL语句 ## JSON查询语法解析 ```json { "run": "select * from @user where id = $num ", "user": "select * from bx_inspec_nodes_record", "num": "100" } ``` > run 节点表示SQL生成的入口,返回SQL语句时返回的是run节点的SQL语句 > user 用户节点,可以自己定义,中文英文都可 > select * from @user where id = $num ,该语句表示run节点需要执行的主SQL,其次,每个节点都对应自己的SQL语句 > 100,在节点中,如果没有特殊的符号,如@,$,将会被当成普通SQL语句 > @ 表示调用节点,会将节点解析后的SQL语句填充到这个位置 > $ 表示常量,不会对常量解析SQL解析 ## 测试案例 > 测试JSON ```JSON { "run": "select * from @联合巡查配置 where 联合巡查配置.inspec_man = $人员", "联合巡查配置": "select * from @最近巡查记录带人员信息 left join @巡查配置集合 on 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid", "最近巡查记录带人员信息":"select * from @最近巡查记录 left join @节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join @人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man", "最近巡查记录": "select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL $查询时间段 DAY) <= date(bx_inspec_nodes_record.create_time) ", "num": "100", "查询时间段": "7", "人员信息集合": "SELECT id as userid FROM `bxshop`.`sys_user`", "节点信息集合": "SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`", "人员": "1582693819476074498", "巡查配置集合": "SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`", "巡查节点配置集合": "SELECT * FROM `bx_inspec_node_config`" } ``` > 构造的SQL语句 ```SQL SELECT * FROM ( SELECT * FROM ( SELECT * FROM ( SELECT * FROM bx_inspec_nodes_record WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time) ) 最近巡查记录 LEFT JOIN ( SELECT id AS bx_inspec_node_id FROM `bxshop`.`bx_inspec_node` ) 节点信息集合 ON 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id INNER JOIN ( SELECT id AS userid FROM `bxshop`.`sys_user` ) 人员信息集合 ON 人员信息集合.userid = 最近巡查记录.create_man ) 最近巡查记录带人员信息 LEFT JOIN ( SELECT bx_inspec_config.id AS bx_inspec_config_id, inspec_man, node_config_id, Inspec_time FROM `bx_inspec_config` ) 巡查配置集合 ON 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid ) 联合巡查配置 WHERE 联合巡查配置.inspec_man = 1582693819476074498 ``` > 构造的调用树 ```JSON { "name" : "run", "treeNodes" : [ { "name" : "联合巡查配置", "treeNodes" : [ { "name" : "最近巡查记录带人员信息", "treeNodes" : [ { "name" : "最近巡查记录", "treeNodes" : [ { "name" : "查询时间段", "treeNodes" : [ ], "element" : { "name" : "查询时间段", "content" : { "key" : " \"查询时间段\"", "value" : "7" }, "sql" : "7", "sqlNodes" : [ { "name" : "7", "value" : "7", "type" : "NORMAL", "sql" : "7", "isParse" : true } ], "isParse" : true, "buildSql" : "7" } } ], "element" : { "name" : "最近巡查记录", "content" : { "key" : " \"最近巡查记录\"", "value" : "select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL $查询时间段 DAY) <= date(bx_inspec_nodes_record.create_time) " }, "sql" : " select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)", "sqlNodes" : [ { "name" : "select", "value" : "select", "type" : "NORMAL", "sql" : "select", "isParse" : true }, { "name" : "*", "value" : "*", "type" : "NORMAL", "sql" : "*", "isParse" : true }, { "name" : "from", "value" : "from", "type" : "NORMAL", "sql" : "from", "isParse" : true }, { "name" : "bx_inspec_nodes_record", "value" : "bx_inspec_nodes_record", "type" : "NORMAL", "sql" : "bx_inspec_nodes_record", "isParse" : true }, { "name" : "where", "value" : "where", "type" : "NORMAL", "sql" : "where", "isParse" : true }, { "name" : "DATE_SUB(CURDATE(),", "value" : "DATE_SUB(CURDATE(),", "type" : "NORMAL", "sql" : "DATE_SUB(CURDATE(),", "isParse" : true }, { "name" : "INTERVAL", "value" : "INTERVAL", "type" : "NORMAL", "sql" : "INTERVAL", "isParse" : true }, { "name" : "查询时间段", "value" : "$查询时间段", "type" : "VALUE", "sql" : "7", "isParse" : true }, { "name" : "DAY)", "value" : "DAY)", "type" : "NORMAL", "sql" : "DAY)", "isParse" : true }, { "name" : "<=", "value" : "<=", "type" : "NORMAL", "sql" : "<=", "isParse" : true }, { "name" : "date(bx_inspec_nodes_record.create_time)", "value" : "date(bx_inspec_nodes_record.create_time)", "type" : "NORMAL", "sql" : "date(bx_inspec_nodes_record.create_time)", "isParse" : true } ], "isParse" : true, "buildSql" : " select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)" } }, { "name" : "节点信息集合", "treeNodes" : [ ], "element" : { "name" : "节点信息集合", "content" : { "key" : " \"节点信息集合\"", "value" : "SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`" }, "sql" : " SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`", "sqlNodes" : [ { "name" : "SELECT", "value" : "SELECT", "type" : "NORMAL", "sql" : "SELECT", "isParse" : true }, { "name" : "id", "value" : "id", "type" : "NORMAL", "sql" : "id", "isParse" : true }, { "name" : "as", "value" : "as", "type" : "NORMAL", "sql" : "as", "isParse" : true }, { "name" : "bx_inspec_node_id", "value" : "bx_inspec_node_id", "type" : "NORMAL", "sql" : "bx_inspec_node_id", "isParse" : true }, { "name" : "FROM", "value" : "FROM", "type" : "NORMAL", "sql" : "FROM", "isParse" : true }, { "name" : "`bxshop`.`bx_inspec_node`", "value" : "`bxshop`.`bx_inspec_node`", "type" : "NORMAL", "sql" : "`bxshop`.`bx_inspec_node`", "isParse" : true } ], "isParse" : true, "buildSql" : " SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`" } }, { "name" : "人员信息集合", "treeNodes" : [ ], "element" : { "name" : "人员信息集合", "content" : { "key" : " \"人员信息集合\"", "value" : "SELECT id as userid FROM `bxshop`.`sys_user`" }, "sql" : " SELECT id as userid FROM `bxshop`.`sys_user`", "sqlNodes" : [ { "name" : "SELECT", "value" : "SELECT", "type" : "NORMAL", "sql" : "SELECT", "isParse" : true }, { "name" : "id", "value" : "id", "type" : "NORMAL", "sql" : "id", "isParse" : true }, { "name" : "as", "value" : "as", "type" : "NORMAL", "sql" : "as", "isParse" : true }, { "name" : "userid", "value" : "userid", "type" : "NORMAL", "sql" : "userid", "isParse" : true }, { "name" : "FROM", "value" : "FROM", "type" : "NORMAL", "sql" : "FROM", "isParse" : true }, { "name" : "`bxshop`.`sys_user`", "value" : "`bxshop`.`sys_user`", "type" : "NORMAL", "sql" : "`bxshop`.`sys_user`", "isParse" : true } ], "isParse" : true, "buildSql" : " SELECT id as userid FROM `bxshop`.`sys_user`" } } ], "element" : { "name" : "最近巡查记录带人员信息", "content" : { "key" : " \"最近巡查记录带人员信息\"", "value" : "select * from @最近巡查记录 left join @节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join @人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man" }, "sql" : " select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man", "sqlNodes" : [ { "name" : "select", "value" : "select", "type" : "NORMAL", "sql" : "select", "isParse" : true }, { "name" : "*", "value" : "*", "type" : "NORMAL", "sql" : "*", "isParse" : true }, { "name" : "from", "value" : "from", "type" : "NORMAL", "sql" : "from", "isParse" : true }, { "name" : "最近巡查记录", "value" : "@最近巡查记录", "type" : "COLLECTION", "sql" : "( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录", "isParse" : true }, { "name" : "left", "value" : "left", "type" : "NORMAL", "sql" : "left", "isParse" : true }, { "name" : "join", "value" : "join", "type" : "NORMAL", "sql" : "join", "isParse" : true }, { "name" : "节点信息集合", "value" : "@节点信息集合", "type" : "COLLECTION", "sql" : "( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合", "isParse" : true }, { "name" : "on", "value" : "on", "type" : "NORMAL", "sql" : "on", "isParse" : true }, { "name" : "最近巡查记录.node_id", "value" : "最近巡查记录.node_id", "type" : "NORMAL", "sql" : "最近巡查记录.node_id", "isParse" : true }, { "name" : "=", "value" : "=", "type" : "NORMAL", "sql" : "=", "isParse" : true }, { "name" : "节点信息集合.bx_inspec_node_id", "value" : "节点信息集合.bx_inspec_node_id", "type" : "NORMAL", "sql" : "节点信息集合.bx_inspec_node_id", "isParse" : true }, { "name" : "inner", "value" : "inner", "type" : "NORMAL", "sql" : "inner", "isParse" : true }, { "name" : "join", "value" : "join", "type" : "NORMAL", "sql" : "join", "isParse" : true }, { "name" : "人员信息集合", "value" : "@人员信息集合", "type" : "COLLECTION", "sql" : "( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合", "isParse" : true }, { "name" : "on", "value" : "on", "type" : "NORMAL", "sql" : "on", "isParse" : true }, { "name" : "人员信息集合.userid", "value" : "人员信息集合.userid", "type" : "NORMAL", "sql" : "人员信息集合.userid", "isParse" : true }, { "name" : "=", "value" : "=", "type" : "NORMAL", "sql" : "=", "isParse" : true }, { "name" : "最近巡查记录.create_man", "value" : "最近巡查记录.create_man", "type" : "NORMAL", "sql" : "最近巡查记录.create_man", "isParse" : true } ], "isParse" : true, "buildSql" : " select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man" } }, { "name" : "巡查配置集合", "treeNodes" : [ ], "element" : { "name" : "巡查配置集合", "content" : { "key" : " \"巡查配置集合\"", "value" : "SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`" }, "sql" : " SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`", "sqlNodes" : [ { "name" : "SELECT", "value" : "SELECT", "type" : "NORMAL", "sql" : "SELECT", "isParse" : true }, { "name" : "bx_inspec_config.id", "value" : "bx_inspec_config.id", "type" : "NORMAL", "sql" : "bx_inspec_config.id", "isParse" : true }, { "name" : "as", "value" : "as", "type" : "NORMAL", "sql" : "as", "isParse" : true }, { "name" : "bx_inspec_config_id,inspec_man", "value" : "bx_inspec_config_id,inspec_man", "type" : "NORMAL", "sql" : "bx_inspec_config_id,inspec_man", "isParse" : true }, { "name" : ",node_config_id,Inspec_time", "value" : ",node_config_id,Inspec_time", "type" : "NORMAL", "sql" : ",node_config_id,Inspec_time", "isParse" : true }, { "name" : "FROM", "value" : "FROM", "type" : "NORMAL", "sql" : "FROM", "isParse" : true }, { "name" : "`bx_inspec_config`", "value" : "`bx_inspec_config`", "type" : "NORMAL", "sql" : "`bx_inspec_config`", "isParse" : true } ], "isParse" : true, "buildSql" : " SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`" } } ], "element" : { "name" : "联合巡查配置", "content" : { "key" : " \"联合巡查配置\"", "value" : "select * from @最近巡查记录带人员信息 left join @巡查配置集合 on 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid" }, "sql" : " select * from ( select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man) AS 最近巡查记录带人员信息 left join ( SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`) AS 巡查配置集合 on 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid", "sqlNodes" : [ { "name" : "select", "value" : "select", "type" : "NORMAL", "sql" : "select", "isParse" : true }, { "name" : "*", "value" : "*", "type" : "NORMAL", "sql" : "*", "isParse" : true }, { "name" : "from", "value" : "from", "type" : "NORMAL", "sql" : "from", "isParse" : true }, { "name" : "最近巡查记录带人员信息", "value" : "@最近巡查记录带人员信息", "type" : "COLLECTION", "sql" : "( select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man) AS 最近巡查记录带人员信息", "isParse" : true }, { "name" : "left", "value" : "left", "type" : "NORMAL", "sql" : "left", "isParse" : true }, { "name" : "join", "value" : "join", "type" : "NORMAL", "sql" : "join", "isParse" : true }, { "name" : "巡查配置集合", "value" : "@巡查配置集合", "type" : "COLLECTION", "sql" : "( SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`) AS 巡查配置集合", "isParse" : true }, { "name" : "on", "value" : "on", "type" : "NORMAL", "sql" : "on", "isParse" : true }, { "name" : "巡查配置集合.inspec_man", "value" : "巡查配置集合.inspec_man", "type" : "NORMAL", "sql" : "巡查配置集合.inspec_man", "isParse" : true }, { "name" : "=", "value" : "=", "type" : "NORMAL", "sql" : "=", "isParse" : true }, { "name" : "最近巡查记录带人员信息.userid", "value" : "最近巡查记录带人员信息.userid", "type" : "NORMAL", "sql" : "最近巡查记录带人员信息.userid", "isParse" : true } ], "isParse" : true, "buildSql" : " select * from ( select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man) AS 最近巡查记录带人员信息 left join ( SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`) AS 巡查配置集合 on 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid" } }, { "name" : "人员", "treeNodes" : [ ], "element" : { "name" : "人员", "content" : { "key" : " \"人员\"", "value" : "1582693819476074498" }, "sql" : "1582693819476074498", "sqlNodes" : [ { "name" : "1582693819476074498", "value" : "1582693819476074498", "type" : "NORMAL", "sql" : "1582693819476074498", "isParse" : true } ], "isParse" : true, "buildSql" : "1582693819476074498" } } ], "element" : { "name" : "run", "content" : { "key" : " \"run\"", "value" : "select * from @联合巡查配置 where 联合巡查配置.inspec_man = $人员" }, "sql" : " select * from ( select * from ( select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man) AS 最近巡查记录带人员信息 left join ( SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`) AS 巡查配置集合 on 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid) AS 联合巡查配置 where 联合巡查配置.inspec_man = 1582693819476074498", "sqlNodes" : [ { "name" : "select", "value" : "select", "type" : "NORMAL", "sql" : "select", "isParse" : true }, { "name" : "*", "value" : "*", "type" : "NORMAL", "sql" : "*", "isParse" : true }, { "name" : "from", "value" : "from", "type" : "NORMAL", "sql" : "from", "isParse" : true }, { "name" : "联合巡查配置", "value" : "@联合巡查配置", "type" : "COLLECTION", "sql" : "( select * from ( select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man) AS 最近巡查记录带人员信息 left join ( SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`) AS 巡查配置集合 on 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid) AS 联合巡查配置", "isParse" : true }, { "name" : "where", "value" : "where", "type" : "NORMAL", "sql" : "where", "isParse" : true }, { "name" : "联合巡查配置.inspec_man", "value" : "联合巡查配置.inspec_man", "type" : "NORMAL", "sql" : "联合巡查配置.inspec_man", "isParse" : true }, { "name" : "=", "value" : "=", "type" : "NORMAL", "sql" : "=", "isParse" : true }, { "name" : "人员", "value" : "$人员", "type" : "VALUE", "sql" : "1582693819476074498", "isParse" : true } ], "isParse" : true, "buildSql" : " select * from ( select * from ( select * from ( select * from bx_inspec_nodes_record where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(bx_inspec_nodes_record.create_time)) AS 最近巡查记录 left join ( SELECT id as bx_inspec_node_id FROM `bxshop`.`bx_inspec_node`) AS 节点信息集合 on 最近巡查记录.node_id = 节点信息集合.bx_inspec_node_id inner join ( SELECT id as userid FROM `bxshop`.`sys_user`) AS 人员信息集合 on 人员信息集合.userid = 最近巡查记录.create_man) AS 最近巡查记录带人员信息 left join ( SELECT bx_inspec_config.id as bx_inspec_config_id,inspec_man ,node_config_id,Inspec_time FROM `bx_inspec_config`) AS 巡查配置集合 on 巡查配置集合.inspec_man = 最近巡查记录带人员信息.userid) AS 联合巡查配置 where 联合巡查配置.inspec_man = 1582693819476074498" } } ``` > 构造的SQL上下文执行树 ```JSON { "name" : "run", "sqlQueryNode" : null, "sqlExecTrees" : [ { "name" : "查人员", "sqlQueryNode" : null, "sqlExecTrees" : [ { "name" : "query", "sqlQueryNode" : { "name" : "查人员", "sql" : null, "sqlSelectFields" : [ ], "selectCollects" : [ ], "sqlJoins" : [ ], "sqlWhere" : null, "groups" : [ ], "havings" : [ ], "orderByList" : [ ], "subSelects" : [ ], "other" : null }, "sqlExecTrees" : null, "isMain" : false, "isParse" : true }, { "name" : "join", "sqlQueryNode" : { "name" : "查人员", "sql" : null, "sqlSelectFields" : [ ], "selectCollects" : [ ], "sqlJoins" : [ ], "sqlWhere" : null, "groups" : [ ], "havings" : [ ], "orderByList" : [ ], "subSelects" : [ ], "other" : null }, "sqlExecTrees" : null, "isMain" : false, "isParse" : true } ], "isMain" : false, "isParse" : null } ], "isMain" : false, "isParse" : null } ``` > 构造的xmind调用树 [xmind调用树](./doc/img/run.tree.png) > 构造的xmind [xmind](./doc/img/run.png) ## 下一步开发计划 > 图形化数据库,数据库,数据库字段查询和管理工具 > JSON可视化编辑器 > SQL图形化构建器 ## 写在最后 > 愿天下没有难写的SQL!