Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

您所在的位置:网站首页 sqldeveloper格式化sql语句 Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

Java中如何解析SQL语句、格式化SQL语句、生成SQL语句?

2023-04-06 15:53| 来源: 网络整理| 查看: 265

昨天在群里看到有小伙伴问,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可以将其解析为如下对象结构

SQL Text └─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语句中的各个要素:

Statement statement = CCJSqlParserUtil.parse(sqlStr); if (statement instanceof Select) { Select select = (Select) statement; PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); SelectExpressionItem selectExpressionItem = (SelectExpressionItem) plainSelect.getSelectItems().get(0); Table table = (Table) plainSelect.getFromItem(); EqualsTo equalsTo = (EqualsTo) plainSelect.getWhere(); Column a = (Column) equalsTo.getLeftExpression(); Column b = (Column) equalsTo.getRightExpression(); } 复制代码

目前,JSqlParser支持了大部分主要的关系型数据库,包括:

Oracle 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等。

项目地址:github.com/JSQLParser/…

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3