JSqlParser
昨天在群里看到有小伙伴问,Java里如何解析SQL语句然后格式化SQL,是否有现成类库可以使用?
之前TJ没有做过这类需求,所以去研究了一下,并找到了一个不过的解决方案,今天推荐给大家,如果您正要做类似内容,那就拿来试试,如果暂时没需求,就先了解收藏(技多不压身)。
JSqlParser
JSqlParser是一个用Java编写的SQL解析器,可以将SQL语句解析为Java对象,从而使开发人员能够轻松地分析、修改和重构SQL查询。
比如,这样的一句SQL语句SELECT 1 FROM dual WHERE a = bSELECT 1 FROM dual WHERE a = b
JSqlParser可以将其解析为如下对象结构
SQLText └─Statements:net.sf.jsqlparser.statement.select.Select └─selectBody:net.sf.jsqlparser.statement.select.PlainSelect ├─selectItems->Collection│└─selectItems:net.sf.jsqlparser.statement.select.SelectExpressionItem │└─LongValue:1 ├─Table:dual └─where:net.sf.jsqlparser.expression.operators.relational.EqualsTo ├─Column:a └─Column:b
然后我们就可以通过其提供的API来访问这句SQL语句中的各个要素:
Statementstatement=CCJSqlParserUtil.parse(sqlStr); if(statementinstanceofSelect){ Selectselect=(Select)statement; PlainSelectplainSelect=(PlainSelect)select.getSelectBody(); SelectExpressionItemselectExpressionItem= (SelectExpressionItem)plainSelect.getSelectItems().get(0); Tabletable=(Table)plainSelect.getFromItem(); EqualsToequalsTo=(EqualsTo)plainSelect.getWhere(); Columna=(Column)equalsTo.getLeftExpression(); Columnb=(Column)equalsTo.getRightExpression(); }
目前,JSqlParser支持了大部分主要的关系型数据库,包括:
MS SQL Server and Sybase
PostgreSQL
MySQL and MariaDB
DB2
H2 and HSQLDB and Derby
SQLite
它支持大多数常见的SQL语法,包括SELECT、INSERT、UPDATE、DELETE等。除了解析SQL语句外,JSqlParser还提供了一些有用的功能,例如格式化SQL语句、生成SQL查询等。此外,JSqlParser还可以与其他Java库和框架集成,例如Hibernate、Spring等。
-
JAVA
+关注
关注
19文章
2966浏览量
104700 -
格式化
+关注
关注
2文章
39浏览量
9112 -
SQL
+关注
关注
1文章
762浏览量
44115 -
数据库
+关注
关注
7文章
3794浏览量
64355
原文标题:Java中如何解析、格式化、生成SQL语句?
文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论