Browse Source

添加 Wrapper#setSqlSelect(String... columns) 方法,方便通过自动生成的实体类的列静态字段快速组装 sqlSelect

bliver 8 years ago
parent
commit
4f78e606d9

+ 23 - 0
src/main/java/com/baomidou/mybatisplus/mapper/Wrapper.java

@@ -114,6 +114,29 @@ public abstract class Wrapper<T> implements Serializable {
         return this;
     }
 
+
+    /**
+     * <p>
+     * 使用字符串数组封装sqlSelect,便于在不需要指定 AS 的情况下通过实体类自动生成的列静态字段快速组装 sqlSelect,<br/>
+     * 减少手动录入的错误率
+     * </p>
+     * @param columns 字段
+     * @return
+     */
+    public Wrapper<T> setSqlSelect(String... columns) {
+        StringBuilder builder = new StringBuilder();
+        for (String column : columns) {
+            if (StringUtils.isNotEmpty(column)) {
+                if (builder.length() > 0) {
+                    builder.append(",");
+                }
+                builder.append(column);
+            }
+        }
+        this.sqlSelect = builder.toString();
+        return this;
+    }
+
     /**
      * <p>
      * 使用对象封装的setsqlselect

+ 11 - 0
src/test/java/com/baomidou/mybatisplus/test/EntityWrapperTest.java

@@ -349,6 +349,17 @@ public class EntityWrapperTest {
         Assert.assertEquals("AND (name=?)\nORDER BY id DESC limit 1,2", sqlSegment);
     }
 
+    /**
+     * 测试 sqlselect
+     */
+    @Test
+    public void testSqlSelectStrings() {
+        EntityWrapper entityWrapper = new EntityWrapper();
+        entityWrapper.setSqlSelect("name", "age", "sex");
+        System.out.println(entityWrapper.getSqlSelect());
+        Assert.assertEquals("name,age,sex", entityWrapper.getSqlSelect());
+    }
+
     /**
      * 测试 sqlselect
      */