浏览代码

修正 EXISTS 方法

miemie 7 年之前
父节点
当前提交
35daaf9267

+ 2 - 14
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -233,7 +233,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
 
     @Override
     public This exists(boolean condition, String existsSql) {
-        return addNestedCondition(condition, existsSql, EXISTS);
+        return doIt(condition, EXISTS, () -> String.format("(%s)", existsSql));
     }
 
     @Override
@@ -269,7 +269,7 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
 
     @Override
     public This inSql(boolean condition, R column, String inValue) {
-        return doIt(condition, () -> columnToString(column), IN, () -> "(" + inValue + ")");
+        return doIt(condition, () -> columnToString(column), IN, () -> String.format("(%s)", inValue));
     }
 
     @Override
@@ -332,18 +332,6 @@ public abstract class AbstractWrapper<T, R, This extends AbstractWrapper<T, R, T
         return doIt(condition, () -> columnToString(column), sqlKeyword, () -> formatSql("{0}", val));
     }
 
-    /**
-     * <p>
-     * 嵌套查询条件
-     * </p>
-     *
-     * @param val        查询条件值
-     * @param sqlKeyword SQL 关键词
-     */
-    protected This addNestedCondition(boolean condition, String val, SqlKeyword sqlKeyword) {
-        return doIt(condition, sqlKeyword, () -> formatSql("({0})", val));
-    }
-
     /**
      * <p>
      * 多重嵌套查询条件

+ 13 - 3
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/mysql/MysqlTestDataMapperTest.java

@@ -105,9 +105,19 @@ public class MysqlTestDataMapperTest {
     @Test
     public void testIn() {
         println(testDataMapper.selectList(new QueryWrapper<TestData>()
-//            .in("test_int", Arrays.asList(1, 2, 3))  ok
-//                .in("test_int", 1, 2, 3)  ok
-                .inSql("test_int", "1,2,3")
+//            .in("test_int", Arrays.asList(1, 2, 3))//ok
+//                .notIn("test_int", Arrays.asList(1, 2, 3)//ok
+//                .in("test_int", 1, 2, 3)//ok
+//                .notIn("test_int", 1, 2, 3)//ok
+//                .inSql("test_int", "1,2,3")//ok
+                .notInSql("test_int", "1,2,3")//ok
+        ));
+    }
+
+    @Test
+    public void testExists() {
+        println(testDataMapper.selectList(new QueryWrapper<TestData>()
+            .exists("select * from test_data")
         ));
     }