码迷,mamicode.com
首页 > 数据库 > 详细

java sql解析器比较druid sql parser vs jsqlparser vs fdb-sql-parser

时间:2019-12-29 17:02:10      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:分布   用户名   oob   语法   实现   分区   nio   wiki   rac   

先上结论。

  功能上:druid sql parser(支持分区、WITH、DUAL等。使用mysql语法解析时,已知oracle的一些操作符会被转为mysql,如|| 转为OR。使用oracle解析器时,union all里面的括号会被移到外面,从而导致可能执行出错) > jsqlparser(不支持分区) > fdb-sql-parser(不支持很复杂的SQL)。因此,首先排除fdb-sql-parser。都不支持不执行SQL语句解析语义,调用preparestatement即可,不是问题。

  易用性:jsqlparser > druid sql parser(文档和javadoc是在TMD懒了)。就druid sql parser和jsqlparser而言,核心只要理解访问者模式,其中核心又为com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor#visit及其父类,使用例子可以参见https://www.jianshu.com/p/3fb67691d3c8。

  所以,如果需要广泛使用,应选择druid sql parser而不是jsqlparser。

注:除了自己写过滤器外,druid也支持sql注入过滤器,可参考:https://my.oschina.net/yysue/blog/1618558,https://www.oschina.net/question/928524_106630

druid sql parser的官方文档:https://github.com/alibaba/druid/wiki/SQL-Parser。后续补充实战手册,我们在分布式查询引擎的重写、分库分表合并、用户名映射、基于sql自动生成智能的查询页面都是基于druid扩展实现的(一开始用jsqlparser,但是太弱了,后面大部分用druid重写了)。

jsqlparser官方文档:http://jsqlparser.sourceforge.net/example.php

java sql解析器比较druid sql parser vs jsqlparser vs fdb-sql-parser

标签:分布   用户名   oob   语法   实现   分区   nio   wiki   rac   

原文地址:https://www.cnblogs.com/zhjh256/p/12001547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!