瀏覽代碼

test: IdeaProxyLambdaMeta.java

hcl 3 年之前
父節點
當前提交
aebaca4dc0

+ 0 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/support/IdeaProxyLambdaMeta.java

@@ -30,7 +30,6 @@ import java.lang.reflect.Proxy;
  * Create by hcl at 2021/5/17
  */
 public class IdeaProxyLambdaMeta implements LambdaMeta {
-
     private final Class<?> clazz;
     private final String name;
 

+ 37 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/support/IdeaProxyLambdaMetaTest.java

@@ -0,0 +1,37 @@
+package com.baomidou.mybatisplus.core.toolkit.support;
+
+import org.junit.jupiter.api.Test;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandleProxies;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+import java.lang.reflect.Proxy;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.function.IntSupplier;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+/**
+ * IDEA 代理 Lambda 表达式测试
+ * <p>
+ * Create by hcl at 2022/8/12
+ */
+class IdeaProxyLambdaMetaTest {
+
+    @Test
+    void test() throws NoSuchMethodException, IllegalAccessException {
+        MethodHandles.Lookup lookup = MethodHandles.lookup();
+        MethodHandle handle = lookup.findStatic(IdeaProxyLambdaMetaTest.class, "s", MethodType.methodType(int.class));
+
+        // 模拟 IDEA 的 lambda 生成
+        IntSupplier supplier = MethodHandleProxies.asInterfaceInstance(IntSupplier.class, handle);
+        IdeaProxyLambdaMeta meta = new IdeaProxyLambdaMeta((Proxy) supplier);
+        assertEquals("s", meta.getImplMethodName());
+    }
+
+    private static int s() {
+        return ThreadLocalRandom.current().nextInt();
+    }
+
+}

+ 9 - 5
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/h2/H2StudentMapperTest.java

@@ -25,16 +25,13 @@ import com.baomidou.mybatisplus.test.h2.entity.H2Student;
 import com.baomidou.mybatisplus.test.h2.enums.GenderEnum;
 import com.baomidou.mybatisplus.test.h2.enums.GradeEnum;
 import com.baomidou.mybatisplus.test.h2.mapper.H2StudentMapper;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.MethodOrderer;
-import org.junit.jupiter.api.Order;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.*;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 
@@ -112,4 +109,11 @@ class H2StudentMapperTest extends BaseTest {
         studentMapper.insert(h2Student);
         Assertions.assertEquals(studentMapper.deleteById(h2Student), 1);
     }
+
+    @Test
+    void testIn() {
+        LambdaQueryWrapper<H2Student> wrapper = Wrappers.<H2Student>lambdaQuery().in(H2Student::getName, Arrays.asList("a", "b"));
+        studentMapper.selectList(wrapper);
+    }
+
 }