Przeglądaj źródła

解决多租户字段无别名问题

hubin 7 lat temu
rodzic
commit
cdd461ff2a

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

@@ -133,13 +133,11 @@ public class TenantSqlParser extends AbstractJsqlParser {
     protected BinaryExpression andExpression(Table table, Expression where) {
         //获得where条件表达式
         EqualsTo equalsTo = new EqualsTo();
+        equalsTo.setLeftExpression(this.getAliasColumn(table));
+        equalsTo.setRightExpression(tenantHandler.getTenantId());
         if (null != where) {
-            equalsTo.setLeftExpression(new Column(this.tenantHandler.getTenantIdColumn()));
-            equalsTo.setRightExpression(tenantHandler.getTenantId());
             return new AndExpression(equalsTo, where);
         }
-        equalsTo.setLeftExpression(this.getAliasColumn(table));
-        equalsTo.setRightExpression(tenantHandler.getTenantId());
         return equalsTo;
     }
 

+ 1 - 1
mybatis-plus-extension/src/test/java/com/baomidou/mybatisplus/extension/test/sql/TenantSqlTest.java

@@ -86,7 +86,7 @@ public class TenantSqlTest {
     @Test
     public void deleteJoin() {
         SqlInfo sqlInfo = tenantSqlParser.optimizeSql(null, "DELETE gc FROM guide_category AS gc LEFT JOIN guide AS g ON g.id_guide = gc.id_guide WHERE g.title IS NULL LIMIT 5");
-        Assert.assertEquals("DELETE gc FROM guide_category AS gc LEFT JOIN guide AS g ON g.id_guide = gc.id_guide WHERE gc.tenant_id = 1000 LIMIT 5", sqlInfo.getSql());
+        Assert.assertEquals("DELETE gc FROM guide_category AS gc LEFT JOIN guide AS g ON g.id_guide = gc.id_guide WHERE gc.tenant_id = 1000 AND g.title IS NULL LIMIT 5", sqlInfo.getSql());
     }
 
     // ----------------------------    update 测试     ----------------------------