服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

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

日期: 来源:程序猿DD收集编辑:TJ

大家好,我是TJ

一个励志推荐10000款开源项目与工具的程序员


昨天在群里看到有小伙伴问,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<SelectExpressionItem>
        │  └─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等。

项目地址:https://github.com/JSQLParser/JSqlParser


往期推荐

一款针对 jar 和 vue 的轻量级自动化部署工具
比 Navicat 更好用的数据库管理工具
谷歌云推出配置管理仪表板,简化 Kubernetes 集群管理

点击下方卡片,关注公众号“TJ君

每天了解一个牛x、好用、有趣的东东

相关阅读

  • 甲状腺癌有哪些影响因素?

  • ●问答●Q()甲状腺癌有哪些影响因素?A甲状腺癌除了遗传因素之外,其实还跟很多因素有关系,比如说我们人体的激素水平包括雌激素孕激素表达的增高也可以促进甲状腺癌的发生。还有甲
  • 12种接口优化的通用方案,我又偷偷学到一波~

  • 一、背景针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。二、接口
  • 【全国爱肝日】春宜养肝 膳食相助

  • “南园春半踏青时,风和闻马嘶,青梅如豆柳如眉,日长蝴蝶飞”,很快又到春分了,中医学五行认为肝属木、五色主青,春季是肝胆经脉旺盛活跃的时节,此时调养肝脏,可以帮助我们气血充沛、阴
  • 【招聘】湖南省岳阳市中医医院人才招聘公告

  • 根据医院业务发展需要,现面向社会公开招聘卫生专业技术人员若干名。招聘岗位招聘条件1、思想政治素质好,拥护中国共产党的领导,热爱祖国热爱人民。2、遵纪守法,爱岗敬业,事业心、

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

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

  • 大家好,我是TJ一个励志推荐10000款开源项目与工具的程序员昨天在群里看到有小伙伴问,Java里如何解析SQL语句然后格式化SQL,是否有现成类库可以使用?之前TJ没有做过这类需求,所以
  • 比亚迪网联商城上新,四大活动来了

  • 比亚迪汽车APP升级到6.8.0,积分可以买车机流量了​本图来源于比亚迪DiLink,如有侵权请联系删除。点击下方卡片关注迪厂往期精彩比亚迪:上调部分新能源车价格,幅度2000元—6000元
  • 甲状腺癌有哪些影响因素?

  • ●问答●Q()甲状腺癌有哪些影响因素?A甲状腺癌除了遗传因素之外,其实还跟很多因素有关系,比如说我们人体的激素水平包括雌激素孕激素表达的增高也可以促进甲状腺癌的发生。还有甲