最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java中如何解析SQL語(yǔ)句、格式化SQL語(yǔ)句、生成SQL語(yǔ)句?

2023-03-11 07:46 作者:吳小敏63  | 我要投稿

昨天在群里看到有小伙伴問(wèn),Java里如何解析SQL語(yǔ)句然后格式化SQL,是否有現(xiàn)成類庫(kù)可以使用?

之前TJ沒(méi)有做過(guò)這類需求,所以去研究了一下,并找到了一個(gè)不過(guò)的解決方案,今天推薦給大家,如果您正要做類似內(nèi)容,那就拿來(lái)試試,如果暫時(shí)沒(méi)需求,就先了解收藏(技多不壓身)。

JSqlParser

JSqlParser是一個(gè)用Java編寫的SQL解析器,可以將SQL語(yǔ)句解析為Java對(duì)象,從而使開(kāi)發(fā)人員能夠輕松地分析、修改和重構(gòu)SQL查詢。

比如,這樣的一句SQL語(yǔ)句SELECT 1 FROM dual WHERE a = bSELECT 1 FROM dual WHERE a = b

JSqlParser可以將其解析為如下對(duì)象結(jié)構(gòu)

SQL Text ?└─Statements: net.sf.jsqlparser.statement.select.Select ? ? └─selectBody: net.sf.jsqlparser.statement.select.PlainSelect ? ? ? ?├─selectItems -> Collection<SelectExpressionItem> ? ? ? ?│ ?└─selectItems: net.sf.jsqlparser.statement.select.SelectExpressionItem ? ? ? ?│ ? ? └─LongValue: 1 ? ? ? ?├─Table: dual ? ? ? ?└─where: net.sf.jsqlparser.expression.operators.relational.EqualsTo ? ? ? ? ? ├─Column: a ? ? ? ? ? └─Column: b

然后我們就可以通過(guò)其提供的API來(lái)訪問(wèn)這句SQL語(yǔ)句中的各個(gè)要素:

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支持了大部分主要的關(guān)系型數(shù)據(jù)庫(kù),包括:

  • Oracle

  • MS SQL Server and Sybase

  • PostgreSQL

  • MySQL and MariaDB

  • DB2

  • H2 and HSQLDB and Derby

  • SQLite

它支持大多數(shù)常見(jiàn)的SQL語(yǔ)法,包括SELECT、INSERT、UPDATE、DELETE等。除了解析SQL語(yǔ)句外,JSqlParser還提供了一些有用的功能,例如格式化SQL語(yǔ)句、生成SQL查詢等。此外,JSqlParser還可以與其他Java庫(kù)和框架集成,例如Hibernate、Spring等。


Java中如何解析SQL語(yǔ)句、格式化SQL語(yǔ)句、生成SQL語(yǔ)句?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
德清县| 固镇县| 周口市| 新巴尔虎左旗| 比如县| 镇雄县| 象山县| 吉木萨尔县| 城口县| 阳春市| 莲花县| 福州市| 康保县| 车险| 恭城| 得荣县| 泗洪县| 新巴尔虎右旗| 阿城市| 正定县| 新宾| 旺苍县| 荣成市| 邳州市| 屏山县| 保康县| 敦化市| 宾阳县| 汤阴县| 乐清市| 城口县| 囊谦县| 鹤庆县| 松桃| 巫山县| 崇信县| 商南县| 西盟| 衡东县| 兴业县| 香格里拉县|