Просмотр исходного кода

Merge pull request #665 from lisciple/lisciple-fix-tenant

Update TenantSqlParser.java
qmdx 6 лет назад
Родитель
Сommit
68cffe5f9a

+ 12 - 2
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/tenant/TenantSqlParser.java

@@ -27,7 +27,9 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import net.sf.jsqlparser.expression.BinaryExpression;
 import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.Parenthesis;
 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.ItemsList;
@@ -154,7 +156,11 @@ public class TenantSqlParser extends AbstractJsqlParser {
         equalsTo.setLeftExpression(this.getAliasColumn(table));
         equalsTo.setRightExpression(tenantHandler.getTenantId());
         if (null != where) {
-            return new AndExpression(equalsTo, where);
+            if (where instanceof OrExpression) {
+                return new AndExpression(equalsTo, new Parenthesis(where));
+            } else {
+                return new AndExpression(equalsTo, where);
+            }
         }
         return equalsTo;
     }
@@ -265,7 +271,11 @@ public class TenantSqlParser extends AbstractJsqlParser {
                     processFromItem((FromItem) binaryExpression.getRightExpression());
                 }
             }
-            return new AndExpression(equalsTo, expression);
+            if (expression instanceof OrExpression) {
+                return new AndExpression(equalsTo, new Parenthesis(expression));
+            } else {
+                return new AndExpression(equalsTo, expression);
+            }
         }
     }