这期内容当中小编将会给大家带来有关什么是JsqlParse,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
JsqlParse是一款基础工具,通过javaCC这个程序生成sql的语法和词法。作用有两个,1是解析sql到java对象,2是按照允许的规则和层次构建java对象后,将其生成sql。
之所以说JsqlParse是一款基础工具,是因为它只有解析和生成的功能,没有任何业务或者具体功能。举个例子,比如Select a From myTable where b = 1001 limit 1,10这个sql,它很机械的解析成一个查询java对象,然后这个对象里有查询的字段名,查询的表名,查询的条件,limit的内容,完全不考虑如果这个是oracle分页的话,sql是错误的。同理,如果你构建了一个分页查询对象,如果需要分页,mysql就在自己里面填充limit的内容,是oralce就自己在外层再包裹查询,mysql和oracle的写法是不能转换的。因为JsqlParse根本什么都不知道,只会直译。
这款工具很基础,对于需要sql解析的功能,这是一个很好的工具,但是功能太基础啦。需要在外层做很多功能性封装,如果有时间,我打算根据目前项目需求做一层封装。目前是不行了,项目时间紧张,另觅他径。
源码分析,这个工具通篇使用的visitor的设计模式,将所有的功能用visitor模式分簇。比如第一步,语句类型(statement),定义statementVisitor,所有类型添加visit方法。而所有visit都没有实现,默认就是字符串,没有任何业务处理。再比如查询语句主体(selectBody),定义selectBodyVisitor。
源码分析,JsqlParse内容简单,从包命名看,expression,parser,schema,statement,util加一个Exception的类。parser解析器,schema简单对象类,statement语句分析,expression表达式功能。
使用只有一句话Statement sqlStmt = CCJSqlParserUtil.parse(new StringReader(sql));解析后就可以对应到具体的类型中分别取各部分内容了。
上述就是小编为大家分享的什么是JsqlParse了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。