Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/3.0' into 3.0

hubin 7 anni fa
parent
commit
89523ba79b

+ 42 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/AbstractWrapper1.java

@@ -0,0 +1,42 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ */
+public abstract class AbstractWrapper1<This, T, R> implements Wrapper1<T> {
+
+    private T entity;
+
+    public T getEntity() {
+        return entity;
+    }
+
+    @SuppressWarnings("unchecked")
+    public This setEntity(T t) {
+        entity = t;
+        return (This) this;
+    }
+
+    abstract String getColumn(R r);
+
+    @SuppressWarnings("unchecked")
+    This where(boolean condition, String sqlWhere, Object... params) {
+        //todo 一通操作组装成sql
+        return (This) this;
+    }
+
+    This eq(R r, Object params) {
+        return eq(true, r, params);
+    }
+
+    @SuppressWarnings("unchecked")
+    This eq(boolean condition, R r, Object params) {
+        //todo 一通操作组装成sql
+        if (condition) {
+            // todo 咔咔咔
+            getColumn(r);//todo 这是获取到的字段名 user_id
+        }
+        return (This) this;
+    }
+}

+ 11 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/Entity1.java

@@ -0,0 +1,11 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ * 获取entity
+ */
+public interface Entity1<T> {
+
+    T getEntity();
+}

+ 40 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/JustDoIt.java

@@ -0,0 +1,40 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ */
+public class JustDoIt {
+
+    public static void main(String[] args) {
+        BaseMapper<User> mapper = new UserMapper();
+        StrWrapper1<User> eq1 = new StrWrapper1<User>().eq("", 1);
+        LambdaWrapper1<User> eq2 = new LambdaWrapper1<User>().eq(User::getId, 1);
+        mapper.selectList(eq1);
+        mapper.selectList(eq2);
+    }
+
+    @Data
+    private static class User {
+        private Integer id;
+        private String name;
+    }
+
+    private interface BaseMapper<T> {
+
+        List<T> selectList(Wrapper1<T> ew);
+    }
+
+    private static class UserMapper implements BaseMapper<User> {
+
+        @Override
+        public List<User> selectList(Wrapper1<User> ew) {
+            System.out.println(ew.getSqlSegment());
+            return null;
+        }
+    }
+}

+ 24 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/LambdaWrapper1.java

@@ -0,0 +1,24 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
+import com.baomidou.mybatisplus.core.toolkit.support.SerializedFunction;
+import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ */
+public class LambdaWrapper1<T> extends AbstractWrapper1<LambdaWrapper1<T>, T, Property<T, ?>> {
+
+    @Override
+    String getColumn(Property<T, ?> tProperty) {
+        //todo 能执行?
+        SerializedLambda resolve = LambdaUtils.resolve((SerializedFunction<T, ?>)tProperty);
+        return resolve.getImplMethodName();
+    }
+
+    @Override
+    public String getSqlSegment() {
+        return null;
+    }
+}

+ 13 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/Property.java

@@ -0,0 +1,13 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+import java.io.Serializable;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ */
+@FunctionalInterface
+public interface Property<T, R> extends Serializable {
+
+    R apply(T r);
+}

+ 11 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/SqlSegment1.java

@@ -0,0 +1,11 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ * 组装sql
+ */
+public interface SqlSegment1 {
+
+    String getSqlSegment();
+}

+ 18 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/StrWrapper1.java

@@ -0,0 +1,18 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ */
+public class StrWrapper1<T> extends AbstractWrapper1<StrWrapper1<T>, T, String> {
+
+    @Override
+    String getColumn(String s) {
+        return s;
+    }
+
+    @Override
+    public String getSqlSegment() {
+        return "";
+    }
+}

+ 8 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/test/lambda1/Wrapper1.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.core.test.lambda1;
+
+/**
+ * @author ming
+ * @Date 2018/5/11
+ */
+public interface Wrapper1<T> extends Entity1<T>, SqlSegment1 {
+}