当前位置: 首页 > news >正文

java 使用JSqlParser和CCJSqlParser 解析sql

maven

<dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.9</version>
</dependency>

解析SQL

String sql = "select aa,bb from b";
Statement statement=CCJSqlParserUtil.parse(sql)Select selectStatement = (Select) statement;
PlainSelect plainSelect = selectStatement.getPlainSelect();
//plainSelect可以获取sql各个部分 如属性集合
List<SelectItem<?>> selectItems0 = plainSelect.getSelectItems();

分析
Statement 被设计成一个接口满足CURD各个处理方式
1、查询PlainSelect继承Select

        1.1//字段起别名  SELECT aa AS ALIAS1, bb AS ALIAS2 FROM bAddAliasesVisitor instance = new AddAliasesVisitor();instance.setPrefix("alias");selectStatement.accept(instance);1.2//加字段SELECT aa AS ALIAS1, bb AS ALIAS2, field FROM bSelectUtils.addExpression(selectStatement, new Column("field"));1.3//加字段表达式 SELECT aa AS ALIAS1, bb AS ALIAS2, field, 5 + 6 FROM bAddition add = new Addition();add.setLeftExpression(new LongValue(5));add.setRightExpression(new LongValue(6));SelectUtils.addExpression(selectStatement, add);1.4//加join  //SELECT aa AS ALIAS1, bb AS ALIAS2, field, 5 + 6 FROM b LEFT JOIN mytable2 ON a = bEqualsTo equalsTo = new EqualsTo();Statement select = (PlainSelect) test(sql);equalsTo.setLeftExpression(new Column("a"));equalsTo.setRightExpression(new Column("b"));Join addJoin = SelectUtils.addJoin(selectStatement, new Table("mytable2"), equalsTo);addJoin.setLeft(true);//SelectUtils构建一个SQL语句Select selectbuild = SelectUtils.buildSelectFromTableAndExpressions(new Table("mytable"), new Column("a"), new Column("b"));//SELECT a, b, c FROM mytableSelectUtils.addExpression(selectbuild, new Column("c"));//where 条件设置EqualsTo equalsTo1 = new EqualsTo();equalsTo1.setLeftExpression(new Column("id"));equalsTo1.setRightExpression(new Column("1"));PlainSelect plainSelect1 = selectbuild.getPlainSelect();plainSelect1.setWhere(equalsTo1);更多条件访问 https://blog.csdn.net/a250152/article/details/128610616

2、插入Insert
3、更新Update
4、删除Delete

相关文章:

java 使用JSqlParser和CCJSqlParser 解析sql

maven <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>4.9</version> </dependency>解析SQL String sql "select aa,bb from b"; Statement statementCCJSq…...

基于spring boot的高校专业实习管理系统的设计与实现

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 设计题目&#xff1a;基于spring boot的高校专业实习管理系统的设计与实现 摘 要 随着国内市场经济这几十年来的蓬勃发展&#xff0c;突然遇到了从国外传入国内的互联网技术&#xff0c;互联网产业从开…...

OpenCV相机标定与3D重建(11)机器人世界手眼标定函数calibrateRobotWorldHandEye()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算机器人世界/手眼标定&#xff1a; w T b _{}^{w}\textrm{T}_b w​Tb​ 和 c T g _{}^{c}\textrm{T}_g c​Tg​。 cv::calibrateRobotWorldHa…...

计算机网络ENSP课设--三层架构企业网络

本课程设计搭建一个小型互联网&#xff0c;并模拟Internet的典型Web服务过程。通过此次课程设计&#xff0c;可以进一步理解Internet的工作原理和协议过程&#xff0c;并提高综合知识的运用能力和分析能力。具体目标包括&#xff1a; &#xff08;1&#xff09;掌握网络拓扑的…...

【openwrt】openwrt-21.02 基于IP地址使用ipset实现策略路由操作说明

openwrt版本信息 DISTRIB_ID=OpenWrt DISTRIB_RELEASE=21.02-SNAPSHOT DISTRIB_REVISION=r0-6bf6af1d5 DISTRIB_TARGET=mediatek/mt7981 DISTRIB_ARCH=aarch64_cortex-a53 DISTRIB_DESCRIPTION=OpenWrt 21.02-SNAPSHOT r0-6bf6af1d5 DISTRIB_TAINTS=no-all busybox override …...

Git:常用命令

一、查看当前分支 git branch 二、查看所有分支 git branch -a 三、切换到远程分支 git checkout origin/分支名 示例&#xff1a;git checkout origin/dev 四、拉取远程分支代码 git pull origin 分支名 示例&#xff1a;git pull origin dev 五、常用指令 查看暂存区…...

【2025最新版】搭建个人博客教程

【2025最新版】搭建个人博客教程 –小记&#xff1a; 在搭建我的这个博客之前我在CSDN也发布过一些文章&#xff0c;目前应该也是几千粉丝了&#xff0c;但是看到别人都是用自己博客写的就感觉自己很LOW&#xff0c;所以就想自己来搭建一个属于自己的个人博客。当然搭建博客的…...

微信小程序实现联动删除输入验证码框

以下是json代码 {"component": true,"usingComponents": {} }以下是wxml代码 <van-popup show"{{ show }}" bind:close"onClose" custom-class"extract"><image src"../../images/extract/icon1.png"…...

数据库中decimal、float 和 double区别

在计算机科学中&#xff0c;decimal、float 和 double 是用于表示和处理数值的不同数据类型。 - decimal 是一种精确的十进制浮点数表示&#xff0c;通常用于需要高精度计算的场景&#xff0c;比如财务应用。它能够精确表示小数&#xff0c;并且不会出现浮点数运算误差。 - flo…...

网络编程01

1. 概念 通过网络&#xff0c;让两个主机之间能够进行通信&#xff0c;基于这样的通信完成一定的功能 只要满足进程不同即可&#xff0c;即使是同一个主机&#xff0c;只要是不同的进程&#xff0c;基于网络完成编程 进行网络编程时&#xff0c;需要操作系统提供一组API&…...

el-dialog修改其样式不生效加deep也没用

场景 el-dialog标签直接写在了template下。 解决方法 在template中先写一层div&#xff0c;包裹住el-dialog。...

三天精通一算法之快速排序

力扣链接912. 排序数组 - 力扣&#xff08;LeetCode&#xff09;注意这题快排不能用递归&#xff0c;否则堆会爆 快速排序&#xff08;Quicksort&#xff09;是一种高效的排序算法&#xff0c;通常使用分治法来将一个列表分成较小的子列表&#xff0c;然后递归地排序这些子列表…...

互联网、物联网的相关标准

互联网的相关标准 网络通信协议&#xff1a; HTTP&#xff08;Hypertext Transfer Protocol&#xff09;&#xff1a;用于在网络中传输文本、图像、音频和视频等数据的协议。它基于请求-响应模型&#xff0c;客户端发送请求给服务器&#xff0c;服务器返回响应。HTTPS&a…...

Linux题库及答案

填空题 1. 建立用户账号的命令是__useradd________。 2. 修改账号密码的命令是__passwd________。 3. 更改用户密码过期信息的命令是__chage________。 4. 创建一个新组的命令是___groupadd_______。 5. 用于在不注销的情况下切换到系统中的另一个用户的命令是___su_…...

Android 镜像模式和扩展模式区别探讨-Android14

Android 镜像模式和扩展模式区别探讨 1、区分镜像模式和扩展模式1.1 扩展屏是否有显示内容1.2 镜像模式显示条件 2、镜像模式界面 同屏显示和异屏显示探讨DisplayManagerService启动及主屏添加-Android13 Android主副屏显示-Android14 1、区分镜像模式和扩展模式 LogicalDispla…...

深度学习笔记之BERT(五)TinyBERT

深度学习笔记之TinyBERT 引言回顾&#xff1a;DistilBERT模型TinyBERT模型结构TinyBERT模型策略Transformer层蒸馏嵌入层蒸馏预测层蒸馏 TinyBERT模型的训练效果展示 引言 上一节介绍了 DistilBERT \text{DistilBERT} DistilBERT模型&#xff0c;本节将继续介绍优化性更强的知…...

【时间序列预测】基于PyTorch实现CNN_BiLSTM算法

文章目录 1. CNN与BiLSTM2. 完整代码实现3. 代码结构解读3.1 CNN Layer3.2 BiLSTM Layer3.3 Output Layer3.4 forward Layer 4. 应用场景5. 总结 本文将详细介绍如何使用Pytorch实现一个结合卷积神经网络&#xff08;CNN&#xff09;和双向长短期记忆网络&#xff08;BiLSTM&am…...

联想Y7000 2024版本笔记本 RTX4060安装ubuntu22.04双系统及深度学习环境配置

目录 1..制作启动盘 2.Windows 磁盘分区,删除原来ubuntu的启动项 3.四个设置 4.安装ubuntu 5.ubuntu系统配置 1..制作启动盘 先下载镜像文件,注意版本对应。Rufus - 轻松创建 USB 启动盘 用rufus制作时,需要注意选择正确的分区类型和系统类型。不然安装的系统会有问题…...

VuePress学习

1.介绍 VuePress 由两部分组成&#xff1a;第一部分是一个极简静态网站生成器 (opens new window)&#xff0c;它包含由 Vue 驱动的主题系统和插件 API&#xff0c;另一个部分是为书写技术文档而优化的默认主题&#xff0c;它的诞生初衷是为了支持 Vue 及其子项目的文档需求。…...

一次“okhttp访问间隔60秒,提示unexpected end of stream“的问题排查过程

一、现象 okhttp调用某个服务&#xff0c;如果第二次访问间隔上一次访问时间超过60s&#xff0c;返回错误&#xff1a;"unexpected end of stream"。 二、最终定位原因&#xff1a; 空闲连接如果超过60秒&#xff0c;服务端会主动关闭连接。此时客户端恰巧访问了这…...

大核小核架构的演进:从DVFS到异构计算,应对先进制程挑战

1. 项目概述&#xff1a;大核小核架构的十字路口在移动计算和嵌入式领域&#xff0c;ARM的“大核小核”&#xff08;big.LITTLE&#xff09;架构在过去十年里几乎成了高性能低功耗的代名词。从智能手机到平板电脑&#xff0c;再到如今的物联网边缘设备&#xff0c;这套将高性能…...

windows系统安装wsl安装opencode教程

使用 AI 助手&#xff08;OpenCode&#xff09;在 WSL2 中高效安全工作教程 背景 在 AI 极大发展的现在&#xff0c;AI 可以帮助我们完成很多工作。那么怎么让 AI 帮我们高效、安全地工作呢&#xff1f;以下是教程。 同时&#xff0c;大模型在 Windows 里面直接执行脚本时错…...

用微信小程序点灯!STC89C51+ESP8266物联网入门实战(附完整源码)

用微信小程序点灯&#xff01;STC89C51ESP8266物联网入门实战&#xff08;附完整源码&#xff09; 当你第一次看到手机上的按钮能控制真实世界的灯泡时&#xff0c;那种"魔法成真"的震撼感&#xff0c;正是物联网的魅力所在。本文将带你用不到百元的硬件成本&#xf…...

VLSI时代下74系列离散逻辑芯片的现代应用与设计实践

1. 从“胶水逻辑”到“系统粘合剂”&#xff1a;离散逻辑芯片的现代生存法则 在今天的数字电路设计领域&#xff0c;提起“7400系列”或者“74HC04”&#xff0c;很多年轻工程师的第一反应可能是博物馆里的古董&#xff0c;或者教科书上的历史章节。主流叙事已经被SoC、FPGA和高…...

用AI写论文怎么不被判AI?写作prompt+降AI工具双层防御攻略!

用AI写论文怎么不被判AI&#xff1f;写作prompt降AI工具双层防御攻略&#xff01; 用 AI 写论文最稳的姿势是「双层防御」——写作端用降 AI 提示词预防&#xff08;0 成本但有能力上限&#xff09; 写完用降 AI 工具兜底&#xff08;4.8 元/千字双降到位&#xff09;。 这两…...

Wat完整使用教程:从基础语法到高级修饰符

Wat完整使用教程&#xff1a;从基础语法到高级修饰符 【免费下载链接】wat Deep inspection of Python objects 项目地址: https://gitcode.com/gh_mirrors/wat2/wat Wat是一款强大的Python对象深度检查工具&#xff0c;能帮助开发者快速获取任何Python对象的详细信息&a…...

BFD与NQA:网络故障检测与性能分析的协同之道

1. BFD与NQA&#xff1a;网络运维的双子星 刚入行做网络运维那会儿&#xff0c;最怕半夜接到告警电话。记得有次凌晨三点&#xff0c;核心交换机突然丢包&#xff0c;传统Ping检测像老牛拉车&#xff0c;等定位到光纤模块故障时&#xff0c;业务已经中断了17分钟。直到后来用上…...

FanControl风扇识别故障排查指南:从零开始解决“风扇隐身“问题

FanControl风扇识别故障排查指南&#xff1a;从零开始解决"风扇隐身"问题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/G…...

深度解析:3种高效的Windows依赖检测完整方案

深度解析&#xff1a;3种高效的Windows依赖检测完整方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO项目是一个专业的Microsoft Visual …...

XUnity.AutoTranslator:打破语言障碍的Unity游戏实时翻译插件终极指南

XUnity.AutoTranslator&#xff1a;打破语言障碍的Unity游戏实时翻译插件终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言不通而错过心爱的外语游戏&#xff1f;是否对复杂的游…...