SQLStringInFo SQL 数据库操作语句的解析器!!!

SQLStringInFo

开源技术栏

SQLStringInFo是一个专注于sql命令语句解析的sql命令解析库,在库中提供了有关SQL命令语法的解析器,通过该库,可以实现快速准确的SQL语句分析处理。

image

介绍

SQLStringInFo是一个专注于sql命令语句解析的sql命令解析库,在库中提供了有关SQL命令语法的解析器,通过该库,可以实现快速准确的SQL语句分析处理。

  • MAVEN依赖坐标

    现在已经支持使用MAVEN将该解析库添加到您的项目中了,当然,您也可以使用gradle连接该maven坐标!

<dependency>
    <groupId>io.github.BeardedManZhao</groupId>
    <artifactId>SQLStringInFo</artifactId>
    <version>1.1</version>
</dependency>

框架中的解析器

解析器是针对SQL语句数据处理的实现,其中存储的有关SQL解析的具体逻辑,在库中,所有的解析器都实现了strInfo.parser.SQLParser接口,接口中有最基本的获取数据的函数,下面是有关库中当前所有解析器的信息。

解析器类型 解析器名称 加入版本 解析器作用
strInfo.parser.SQLParser null v1.0 统一所有解析器的接口
strInfo.parser.SelectParser select v1.0 针对Select语句进行解析
strInfo.parser.InsertParser insert v1.0 针对insert语句进行解析
strInfo.parser.CreateParser create v1.0 针对create语句进行解析
strInfo.parser.AlterParser alter v1.0 针对alter语句进行解析

框架中解析器的返回值

返回值是解析器在解析一个SQL语句之后的结果存储对象,所有的结果语句对象实现于"strInfo.result.Statement"抽象类,在结果对象可以通过解析词获取到所有借此词对应的数据,解析器本身也会提供一些函数供人使用。

语句结果类型 加入版本 支持的解析词 功能
strInfo.result.Statement v1.0 null
strInfo.result.SelectStatement v1.0 select from where group order limit
strInfo.result.InsertStatement v1.0 insert table value values
strInfo.result.CreateStatement v1.0 create table field option like as
strInfo.result.AlterStatement v1.0 alter mod addINFO table add drop rename change index primary unique field
strInfo.result.SelectStatement 的解析词

该类是针对 select 语句的解析结果进行存储的类,在类中有诸多解析词可以使用,下面就是有关该类解析词的所有解释与说明。

解析词 加入版本 作用
select v1.0 用于获取到select子句的字符串
from v1.0 用于获取到查询的表名称
where v1.0 用于获取到where或者on子句的数据
group v1.0 用于获取到SQL中的分组语句条件
order v1.0 用于获取到所有需要排序的列名称
limit v1.0 用于获取到本次查询中有关分页的信息
  • 使用示例
package strInfo;

import strInfo.parser.SelectParser;
import strInfo.result.SelectStatement;

import java.util.ArrayList;
import java.util.Arrays;

/**
 * 测试用例类
 *
 * @author zhao
 */
public class MAIN {
   
   
    public static void main(String[] args) {
   
   
        // 构建一个SQL语句
        String sql = "select name, avg(achievement) as a from student right join achievement inner join (select * from sub_zhao;) left join (select * from sub_zhao123;) WHERE student.id = achievement.id and true group by name order by a desc limit 1;";
        // 通过单例设计获取到SQL语句的解析器,并调用parserSQL函数解析SQL
        SelectStatement selectStatement = SelectParser.getInstance().parseSql(sql);
        // 通过返回的结果对象,获取到解析出来的结果数据
        System.out.println("查询的表\t:" + selectStatement.getTableName());
        System.out.println("查询的字段\t:" + Arrays.toString(selectStatement.getFieldNames()));
        System.out.println("select 子句\t:" + selectStatement.getStatementStrByWord("select"));
        System.out.println("group 子句\t:" + select
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值