0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_ro2CN3Fa 来源:芋道源码 2023-04-10 11:59 次阅读

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支持了大部分主要的关系型数据库,包括:

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

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2966

    浏览量

    104700
  • 格式化
    +关注

    关注

    2

    文章

    39

    浏览量

    9112
  • SQL
    SQL
    +关注

    关注

    1

    文章

    762

    浏览量

    44115
  • 数据库
    +关注

    关注

    7

    文章

    3794

    浏览量

    64355

原文标题:Java中如何解析、格式化、生成SQL语句?

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    U盘在windows无法格式化何解

    U盘在windows无法格式化何解决尝试一:杀毒排查,无毒尝试二:当然是本机格式化,无效尝试三:DOS下format,提示出现错误,无效尝试四:到管理工具--计算机管理---磁盘管理下找优盘盘符
    发表于 05-20 17:37

    SQL语句生成

    SQL语句生成SQL数据库语句生成及分析器(支持表结构、索引、所有记录到
    发表于 06-12 16:15

    何解决bitlockerU盘 格式化

    SanDis U盘 128G,没有物理保护键,设置了bitlocker,知道密码,可以正常读取,无法编辑,Windows下无法使用格式化,磁盘工具检查修复无法运行,我的电脑右键管理磁盘工具无法
    发表于 10-28 21:08

    格式化硬盘

    格式化硬盘 软盘只需要一次格式化,硬盘却需要两级,即低级格式化和高级格式化。  硬盘的低级格式化在每个磁片上划分
    发表于 12-25 15:40 1093次阅读

    笔记本硬盘维护之格式化

    笔记本硬盘维护之格式化篇   格式化硬盘(并非低格)会影响硬盘寿命吗?用Windows对硬盘进行格式化与对软盘进行格式化原理一样
    发表于 01-20 10:32 368次阅读

    笔记本硬盘格式化几点须知

    笔记本硬盘格式化几点须知  格式化硬盘(并非低格)会影响硬盘寿命吗?用Windows对硬盘进行格式化与对软盘进行格式化原理一样吗?
    发表于 01-23 14:15 667次阅读

    如何格式化硬盘

    如何格式化硬盘    这是广大电脑初学者经常询问的问题,因为格式化硬盘是安装装系统的前提,所以这就成为了需要首先解决的问题,本文将针这个
    发表于 02-24 11:25 465次阅读

    格式化对硬盘有伤害吗_硬盘格式化后数据还能恢复吗

    普通的格式化硬盘是不会影响硬盘寿命的。硬盘格式化后数据还能恢复吗?下面就来看看使用强力数据是如何将格式化后的数据给恢复的吧。
    发表于 12-14 16:09 1.7w次阅读

    java生成json格式数据 和 java遍历json格式数据

    本文档内容介绍了基于java生成json格式数据 和 java遍历json格式数据,供参考
    发表于 03-19 15:04 0次下载

    格式化是什么

    格式化(format)是指对磁盘或磁盘的分区(partition)进行初始的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级
    的头像 发表于 01-09 15:20 8.6w次阅读

    D盘无法格式化的解决方法分享

    电脑的使用windows7系统过程,发现电脑磁盘的有一些不需要的文件想直接格式化,由于自己的电脑D盘太乱,想要格式化D盘。
    的头像 发表于 08-10 16:25 5291次阅读
    D盘无法<b class='flag-5'>格式化</b>的解决方法分享

    python字符串格式化

    python字符串格式化 格式化输出,主要有三种方式 使用 % 进行格式化 使用 format 函数进行格式化 使用 f-string 进行格式化
    的头像 发表于 02-21 16:28 1574次阅读
    python字符串<b class='flag-5'>格式化</b>

    数据库数据恢复-数据库文件被删除/分区被格式化SQL SERVER数据恢复方案

    数据库数据恢复-数据库文件被删除/分区被格式化SQL SERVER数据恢复方案
    的头像 发表于 09-21 14:34 831次阅读

    如何使用 Java 原生格式化Instant

    今天我们将聊聊如何在Java把一个 Instant 格式化为一个字符串。我们将展示如何使用 Java 原生和第三方库(如Joda-Time)来处理这个事情。 使用
    的头像 发表于 10-09 14:51 1259次阅读

    oracle执行sql查询语句的步骤是什么

    Oracle数据库是一种常用的关系型数据库管理系统,具有强大的SQL查询功能。Oracle执行SQL查询语句的步骤包括编写SQL语句
    的头像 发表于 12-06 10:49 951次阅读