概述
一切不从需求出发的开发工作,都是“耍流氓”。
近期项目需求,需要对标准sql进行解析,比如:将一个select语句的查询字段解析出来。
需求明确,开始造轮子。造轮子之前,往往要去网上“爬”一遍,前车之鉴总是有必要的。
发现了sql解析利器jsqlparser。看了下github,还是有活跃的github地址(截止2016-12-26)。
实践
简述
JSqlParser解析SQL语句,并转化为Java类的层次结构,生成的层次结构可使用访问者模式。
案例
以select 查询语句为例。
1 | SELECT 1,a.*,TRIM(b.task_name) AS task_name1 FROM task a JOIN task_running_sts b ON a.id=b.task_id; |
测试程序
1 | public class JSqlParserDemo { |
debug,看到selectItem对象。
select结果为,别名,表达式,table等,情况。
再看源码
分三种情况处理,JSqlParser封装的结构简单明了。
封装实现
1 | @Service |
结束语
授人以鱼,不如授人以渔 —《淮南子·说林训》