Sfoglia il codice sorgente

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

# Conflicts:
#	mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java
#	mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/EntityWrapper.java
#	mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/UpdateWrapper.java
hubin 7 anni fa
parent
commit
f950c8fb3e

+ 31 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/condition/AbstractCondition.java

@@ -0,0 +1,31 @@
+package com.baomidou.mybatisplus.core.toolkit.condition;
+
+/**
+ * 谨慎的传递泛型
+ * 主要的条件拼接都是这货干活
+ * <p>
+ * Create by HCL at 2018/05/29
+ */
+public abstract class AbstractCondition<This, CLASS, COLUMN>
+    implements ICondition<This, CLASS, COLUMN> {
+
+    private StringBuilder sb = new StringBuilder();
+
+    @Override
+    public This eq(COLUMN column, Object value) {
+        sb.append(getColumn(column)).append(" = ").append(value);
+        return typedSelf();
+    }
+
+    protected abstract String getColumn(COLUMN column);
+
+    @SuppressWarnings("unchecked")
+    protected This typedSelf() {
+        return (This) this;
+    }
+
+    @Override
+    public String toString() {
+        return sb.toString();
+    }
+}

+ 13 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/condition/ICondition.java

@@ -0,0 +1,13 @@
+package com.baomidou.mybatisplus.core.toolkit.condition;
+
+/**
+ * 条件定义,只提需求
+ *
+ * Create by HCL at 2018/05/29
+ */
+public interface ICondition<This, CLASS, COLUMN> {
+
+    // 暂时定义一个方法
+    This eq(COLUMN column, Object value);
+
+}

+ 8 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/condition/IStrCondition.java

@@ -0,0 +1,8 @@
+package com.baomidou.mybatisplus.core.toolkit.condition;
+
+/**
+ * Create by HCL at 2018/05/29
+ */
+public interface IStrCondition<T, SC> extends ICondition<SC, T, String> {
+
+}

+ 14 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/condition/IStrConditionImpl.java

@@ -0,0 +1,14 @@
+package com.baomidou.mybatisplus.core.toolkit.condition;
+
+/**
+ * Create by HCL at 2018/05/29
+ */
+public class IStrConditionImpl<T, SC> extends AbstractCondition<SC, T, String>
+    implements IStrCondition<T, SC> {
+
+    @Override
+    protected String getColumn(String s) {
+        return s;
+    }
+
+}

+ 10 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/condition/Wrapper.java

@@ -0,0 +1,10 @@
+package com.baomidou.mybatisplus.core.toolkit.condition;
+
+/**
+ * Create by HCL at 2018/05/29
+ */
+public interface Wrapper<T> extends IStrCondition<T, Wrapper<T>> {
+
+    String getSqlSeq();
+
+}

+ 15 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/condition/WrapperImpl.java

@@ -0,0 +1,15 @@
+package com.baomidou.mybatisplus.core.toolkit.condition;
+
+/**
+ * Create by HCL at 2018/05/29
+ */
+public class WrapperImpl<T> extends IStrConditionImpl<T, Wrapper<T>> implements Wrapper<T> {
+
+    @Override
+    public String getSqlSeq() {
+        return super.toString();
+    }
+
+
+
+}

+ 21 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/condition/WrapperTest.java

@@ -0,0 +1,21 @@
+package com.baomidou.mybatisplus.core.toolkit.condition;
+
+import org.junit.Test;
+
+import lombok.Getter;
+
+public class WrapperTest {
+
+    @Test
+    public void name() {
+        Wrapper<User> wrapper = new WrapperImpl<>();
+        wrapper.eq("id", 123);
+        System.out.println(wrapper.getSqlSeq());
+    }
+
+    @Getter
+    private class User {
+
+        private int id;
+    }
+}