From 70909ae10d752b4c1bd7c8ac9530531ef972119e Mon Sep 17 00:00:00 2001 From: xxxtea <1027449630@qq.com> Date: Wed, 5 Feb 2025 16:09:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A4=9A=E7=A7=9F=E6=88=B7=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E6=9F=A5=E8=AF=A2=E4=BD=BF=E7=94=A8=E7=B4=A2?= =?UTF-8?q?=E5=BC=95=E7=9A=84=E4=BC=98=E5=8C=96#6687?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/handler/TenantLineHandler.java | 12 ++++++++ .../inner/TenantLineInnerInterceptor.java | 14 +++++++++ .../inner/TenantLineInnerInterceptorTest.java | 29 +++++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/handler/TenantLineHandler.java b/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/handler/TenantLineHandler.java index f281cf07c..0dcacbfdd 100644 --- a/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/handler/TenantLineHandler.java +++ b/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/handler/TenantLineHandler.java @@ -47,6 +47,18 @@ default String getTenantIdColumn() { return "tenant_id"; } + /** + * where语句租户字段名是否前置 + *
+ * 默认为不前置 where id=? and name=? and tenant_id=? + * 前置,可以使用索引 where tenant_id=? and id=? and name=? + * + * @return 是否前置 + */ + default boolean tenantIdColumnFirst() { + return false; + } + /** * 根据表名判断是否忽略拼接多租户条件 *
diff --git a/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/TenantLineInnerInterceptor.java b/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/TenantLineInnerInterceptor.java index 525f9f71a..9ea9718a6 100644 --- a/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/TenantLineInnerInterceptor.java +++ b/mybatis-plus-jsqlparser-support/mybatis-plus-jsqlparser/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/TenantLineInnerInterceptor.java @@ -21,6 +21,8 @@ import com.baomidou.mybatisplus.extension.toolkit.PropertyMapper; import lombok.*; import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.operators.conditional.AndExpression; +import net.sf.jsqlparser.expression.operators.conditional.OrExpression; import net.sf.jsqlparser.expression.operators.relational.EqualsTo; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.expression.operators.relational.ParenthesedExpressionList; @@ -261,4 +263,16 @@ public Expression buildTableExpression(final Table table, final Expression where } return new EqualsTo(getAliasColumn(table), tenantLineHandler.getTenantId()); } + + @Override + public Expression builderExpression(Expression currentExpression, List