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

java:使用JSqlParser给sql语句增加tenant_id和deleted条件

# 示例代码

【pom.xml】

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-core</artifactId><version>3.4.3.1</version>
</dependency>

【MyJSqlParserTest.java】

package com.chz.myJSqlParser;public class MyJSqlParserTest {public static void main(String[] args) throws JSQLParserException{Select stmt = (Select) CCJSqlParserUtil.parse(" SELECT col1 AS a, col2 AS b" +" FROM table_name " +" WHERE col_1 = 10" +" AND col_2 = 20");System.out.println("before ::: " + stmt.toString());PlainSelect plainSelect = (PlainSelect)stmt.getSelectBody();Expression whereExpression = plainSelect.getWhere();whereExpression = andTenantIdExpression(whereExpression, 1L);whereExpression = andDeletedExpression(whereExpression, true);plainSelect.setWhere(whereExpression);System.out.println("after ::: " + stmt);}private static BinaryExpression andTenantIdExpression(Expression where, Long tenantId) {EqualsTo equalsTo = new EqualsTo();equalsTo.setLeftExpression(new Column("tenant_id"));equalsTo.setRightExpression(new LongValue(tenantId));if (null != where) {if (where instanceof OrExpression) {return new AndExpression(equalsTo, new Parenthesis(where));} else {return new AndExpression(equalsTo, where);}}return equalsTo;}private static Expression andDeletedExpression(Expression where, Boolean deleted){IsBooleanExpression isBooleanExpression = new IsBooleanExpression();isBooleanExpression.setLeftExpression(new Column("deleted"));isBooleanExpression.setIsTrue(deleted);if (null != where) {if (where instanceof OrExpression) {return new AndExpression(isBooleanExpression, new Parenthesis(where));} else {return new AndExpression(isBooleanExpression, where);}}return isBooleanExpression;}
}

运行【MyJSqlParserTest】
在这里插入图片描述

# 其它参考资料:

https://juejin.cn/post/7072190387342802981

http://www.lryc.cn/news/372286.html

相关文章:

  • 华三HCL模拟器安装及华三防火墙配置
  • MySQL基础---库的操作和表的操作(配着自己的实操图,简单易上手)
  • 【6】第一个Java程序:Hello World
  • pytorch神经网络训练(AlexNet)
  • 构建大语言模型友好型网站
  • Git代码冲突原理与三路合并算法
  • 聆思CSK6大模型开发板英语评测类开源SDK详解
  • 通用大模型VS垂直大模型,你更青睐哪一方?
  • Python第二语言(十四、高阶基础)
  • python脚本之调用其他目录脚本
  • C# 事件(Event)定义及其使用
  • 2.负载压力测试
  • 【AI工具】jupyter notebook和jupyterlab对比和安装
  • Linux 基本指令3
  • 在Linux系统中,可以使用OpenSSL来生成CSR(Certificate Signing Request)、PEM格式的公钥和PEM格式的私钥。
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 团队派遣(100分) - 三语言AC题解(Python/Java/Cpp)
  • Python数据分析与机器学习在医疗诊断中的应用
  • vite.config.js如何使用env的环境变量
  • MySql几十万条数据,同时新增或者修改
  • 如何提高MySQL DELETE 速度
  • 本地Zabbix开源监控系统安装内网穿透实现远程访问详细教程
  • 从Android刷机包提取System和Framework
  • 分布式光纤测温DTS与红外热成像系统的主要区别是什么?
  • python数据分析-问卷数据分析(地理课)
  • 【ARM64 常见汇编指令学习 19.3 -- ARMv8 三目运算指令 csel 详细介绍】
  • Docker 安装部署(CentOS 8)
  • Python自动化
  • 自然语言处理领域的重大挑战:解码器 Transformer 的局限性
  • 【机器学习】机器学习赋能医疗健康:从诊断到治疗的智能化革命
  • Elasticsearch6.7版本,内网中其他电脑无法连接