Quellcode durchsuchen

dao操作大变更,引入ezorm作为动态表单引擎

周浩 vor 9 Jahren
Ursprung
Commit
796b86cf86
64 geänderte Dateien mit 486 neuen und 955 gelöschten Zeilen
  1. 1 0
      .gitignore
  2. 5 1
      hsweb-web-bean/pom.xml
  3. 2 16
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/InsertParam.java
  4. 21 117
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/QueryParam.java
  5. 1 59
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Sort.java
  6. 9 125
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/SqlParam.java
  7. 0 150
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Term.java
  8. 0 72
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/TermType.java
  9. 2 16
      hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/UpdateParam.java
  10. 1 1
      hsweb-web-concurrent/hsweb-web-concurrent-cache/pom.xml
  11. 2 6
      hsweb-web-concurrent/hsweb-web-concurrent-lock/pom.xml
  12. 1 1
      hsweb-web-concurrent/pom.xml
  13. 1 1
      hsweb-web-controller/pom.xml
  14. 8 0
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/ControllerExceptionTranslator.java
  15. 18 0
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/ExceptionHandlerConfiguration.java
  16. 1 1
      hsweb-web-controller/src/main/java/org/hsweb/web/controller/form/DynamicFormController.java
  17. 5 3
      hsweb-web-core/pom.xml
  18. 5 5
      hsweb-web-core/src/main/java/org/hsweb/web/core/Install.java
  19. 1 0
      hsweb-web-core/src/main/java/org/hsweb/web/core/message/ResponseMessage.java
  20. 1 1
      hsweb-web-crawler/pom.xml
  21. 1 1
      hsweb-web-dao-impl-mybatis/README.md
  22. 1 1
      hsweb-web-dao-impl-mybatis/pom.xml
  23. 5 3
      hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/builder/DefaultSqlParamBuilder.java
  24. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/classified/ClassifiedMapper.xml
  25. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/config/ConfigMapper.xml
  26. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/form/FormMapper.xml
  27. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/history/HistoryMapper.xml
  28. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/module/ModuleMapper.xml
  29. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/resource/ResourcesMapper.xml
  30. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/RoleMapper.xml
  31. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/template/TemplateMapper.xml
  32. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/user/UserMapper.xml
  33. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/classified/ClassifiedMapper.xml
  34. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/config/ConfigMapper.xml
  35. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/form/FormMapper.xml
  36. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/history/HistoryMapper.xml
  37. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/module/ModuleMapper.xml
  38. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/resource/ResourcesMapper.xml
  39. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/RoleMapper.xml
  40. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/template/TemplateMapper.xml
  41. 1 1
      hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/user/UserMapper.xml
  42. 1 1
      hsweb-web-dao-interface/pom.xml
  43. 5 3
      hsweb-web-service-impl-common/pom.xml
  44. 30 22
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/DataBaseAutoConfiguration.java
  45. 15 18
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/basic/SqlExecutorService.java
  46. 102 24
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DefaultFormParser.java
  47. 77 139
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DynamicFormServiceImpl.java
  48. 0 13
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormParser.java
  49. 10 11
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormServiceImpl.java
  50. 0 27
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/trigger/ScriptTrigger.java
  51. 27 24
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/validator/GroovyDycBeanValidator.java
  52. 13 9
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/validator/GroovyDycBeanValidatorFactory.java
  53. 0 1
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/module/ModuleServiceImpl.java
  54. 1 1
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/system/DataBaseManagerServiceImpl.java
  55. 3 3
      hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/template/TemplateServiceImpl.java
  56. 14 12
      hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/form/FormServiceImplTest.java
  57. 24 16
      hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/system/DataBaseManagerServiceImplTest.java
  58. 1 1
      hsweb-web-service-interface/pom.xml
  59. 3 2
      hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/DynamicFormService.java
  60. 19 0
      hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/FormParser.java
  61. 1 1
      hsweb-web-websocket/pom.xml
  62. 1 6
      hsweb-web-workflow/pom.xml
  63. 4 4
      hsweb-web-workflow/src/main/java/org/hsweb/web/workflow/controller/model/ActivityModelController.java
  64. 25 19
      pom.xml

+ 1 - 0
.gitignore

@@ -1,3 +1,4 @@
+**/pom.xml.versionsBackup
 **/target/
 **/out/
 **/log/

+ 5 - 1
hsweb-web-bean/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-bean</artifactId>
@@ -16,6 +16,10 @@
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-validator</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.hsweb</groupId>
+            <artifactId>hsweb-easy-orm</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.webbuilder</groupId>
             <artifactId>wb-utils</artifactId>

+ 2 - 16
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/InsertParam.java

@@ -3,27 +3,13 @@ package org.hsweb.web.bean.common;
 /**
  * Created by zhouhao on 16-4-19.
  */
-public class InsertParam<T> extends SqlParam<InsertParam<T>> {
-    private T data;
+public class InsertParam<T> extends org.hsweb.ezorm.param.InsertParam<T> {
 
     public InsertParam() {
     }
 
     public InsertParam(T data) {
-        this.data = data;
-    }
-
-    public InsertParam<T> value(T data) {
-        this.data = data;
-        return this;
-    }
-
-    public T getData() {
-        return data;
-    }
-
-    public void setData(T data) {
-        this.data = data;
+        setData(data);
     }
 
     public static <T> InsertParam<T> build(T data) {

+ 21 - 117
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/QueryParam.java

@@ -1,137 +1,41 @@
 package org.hsweb.web.bean.common;
 
+
+import org.hsweb.ezorm.param.Term;
+import org.hsweb.ezorm.param.TermType;
+
 import java.io.Serializable;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.List;
 
 /**
  * Created by 浩 on 2016-01-16 0016.
  */
-public class QueryParam extends SqlParam<QueryParam> implements Serializable {
+public class QueryParam extends org.hsweb.ezorm.param.QueryParam<QueryParam> implements Serializable {
     private static final long serialVersionUID = 7941767360194797891L;
 
-    /**
-     * 是否进行分页,默认为true
-     */
-    private boolean paging = true;
-
-    /**
-     * 第几页 从0开始
-     */
-    private int pageIndex = 0;
-
-    /**
-     * 每页显示记录条数
-     */
-    private int pageSize = 25;
-
-    /**
-     * 排序字段
-     */
-    @Deprecated
-    private Set<String> sortField = new LinkedHashSet<>();
-
-    /**
-     * 排序字段
-     */
-    private List<Sort> sorts = new LinkedList<>();
-
-    /**
-     * 排序方式 DESC 反序 ASC 正序
-     */
-    @Deprecated
-    private String sortOrder = "asc";
-
-    public QueryParam select(String... fields) {
-        return this.includes(fields);
-    }
-
-    public Sort orderBy(String sortField) {
-        Sort sort = new Sort(this, sortField);
-        sorts.add(sort);
-        return sort;
-    }
-
-    public QueryParam doPaging(int pageIndex) {
-        this.pageIndex = pageIndex;
-        this.paging = true;
-        return this;
-    }
-
     public QueryParam noPaging() {
-        this.paging = false;
-        return this;
-    }
-
-    public QueryParam doPaging(int pageIndex, int pageSize) {
-        this.pageIndex = pageIndex;
-        this.pageSize = pageSize;
-        this.paging = true;
-        return this;
-    }
-
-    public QueryParam rePaging(int total) {
-        paging = true;
-        // 当前页没有数据后跳转到最后一页
-        if (this.getPageIndex() != 0 && (pageIndex * pageSize) >= total) {
-            int tmp = total / this.getPageSize();
-            pageIndex = total % this.getPageSize() == 0 ? tmp - 1 : tmp;
-        }
+        setPaging(false);
         return this;
     }
 
-    public boolean isPaging() {
-        return paging;
-    }
-
-    public void setPaging(boolean paging) {
-        this.paging = paging;
-    }
-
-    public int getPageIndex() {
-        return pageIndex;
-    }
-
-    public void setPageIndex(int pageIndex) {
-        this.pageIndex = pageIndex;
-    }
-
-    public int getPageSize() {
-        return pageSize;
-    }
-
-    public void setPageSize(int pageSize) {
-        this.pageSize = pageSize;
-    }
-
-    public Set<String> getSortField() {
-        return sortField;
-    }
-
-    public void setSortField(Set<String> sortField) {
-        this.sortField = sortField;
-    }
-
-    public String getSortOrder() {
-        return sortOrder;
-    }
-
-    public void setSortOrder(String sortOrder) {
-        if (sortOrder.contains("desc") || sortOrder.contains("DESC"))
-            sortOrder = "desc";
-        this.sortOrder = sortOrder;
-    }
-
-    public static QueryParam newInstance() {
-        return new QueryParam();
+    @Override
+    public void setTerms(List<Term> terms) {
+        super.setTerms(terms);
     }
 
-    public List<Sort> getSorts() {
-        return sorts;
+    @Override
+    public List<Term> getTerms() {
+        checkTerm(terms);
+        return super.getTerms();
     }
 
-    public void setSorts(List<Sort> sorts) {
-        this.sorts = sorts;
+    protected void checkTerm(List<Term> terms) {
+        terms.forEach(term -> {
+            if (term.getTermType() == TermType.func) {
+                term.setTermType(TermType.eq);
+            }
+            checkTerm(term.getTerms());
+        });
     }
 
     public static QueryParam build() {

+ 1 - 59
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Sort.java

@@ -3,63 +3,5 @@ package org.hsweb.web.bean.common;
 /**
  * Created by zhouhao on 16-5-14.
  */
-public class Sort {
-    private String field;
-
-    private String dir = "asc";
-
-    private transient QueryParam queryParam;
-
-    public String getField() {
-        return field;
-    }
-
-    public void setField(String field) {
-        this.field = field;
-    }
-
-    public String getDir() {
-        return dir;
-    }
-
-    public void setDir(String dir) {
-        this.dir = dir;
-    }
-
-    public Sort() {
-    }
-
-    public Sort(QueryParam queryParam, String field) {
-        this.queryParam = queryParam;
-        this.field = field;
-    }
-
-    public Sort(String field) {
-        this.field = field;
-    }
-
-    public QueryParam asc() {
-        this.dir = "asc";
-        return queryParam;
-    }
-
-    public QueryParam desc() {
-        this.dir = "desc";
-        return queryParam;
-    }
-
-    public Sort and(String field) {
-        return queryParam.orderBy(field);
-    }
-
-    @Override
-    public int hashCode() {
-        return String.valueOf(field).concat(dir).hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (obj == null) return false;
-        return this.hashCode() == obj.hashCode();
-    }
+public class Sort extends org.hsweb.ezorm.param.Sort {
 }

+ 9 - 125
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/SqlParam.java

@@ -1,6 +1,8 @@
 package org.hsweb.web.bean.common;
 
 import com.alibaba.fastjson.JSON;
+import org.hsweb.ezorm.param.Term;
+import org.hsweb.ezorm.param.TermType;
 import org.webbuilder.utils.common.MapUtils;
 import org.webbuilder.utils.common.StringUtils;
 
@@ -9,134 +11,16 @@ import java.util.*;
 /**
  * Created by zhouhao on 16-4-19.
  */
-public class SqlParam<R extends SqlParam> {
+public class SqlParam<R extends SqlParam> extends org.hsweb.ezorm.param.SqlParam<R> {
 
-    @Deprecated
-    protected Map<String, Object> term = new HashMap<>();
+    protected Map<String, Object> params = new HashMap<>();
 
-    /**
-     * 条件
-     */
-    protected List<Term> terms = new LinkedList<>();
-
-    /**
-     * 指定要处理的字段
-     */
-    protected Set<String> includes = new LinkedHashSet<>();
-
-    /**
-     * 指定不处理的字段
-     */
-    protected Set<String> excludes = new LinkedHashSet<>();
-
-    public R or(String termString, Object value) {
-        Term term = new Term();
-        term.setField(termString);
-        term.setValue(value);
-        term.setType(Term.Type.or);
-        terms.add(term);
-        return (R) this;
-    }
-
-    public R and(String termString, Object value) {
-        Term term = new Term();
-        term.setField(termString);
-        term.setValue(value);
-        term.setType(Term.Type.and);
-        terms.add(term);
-        return (R) this;
-    }
-
-    public Term nest() {
-        return nest(null, null);
-    }
-
-    public Term orNest() {
-        return orNest(null, null);
-    }
-
-    public Term nest(String termString, Object value) {
-        Term term = new Term();
-        term.setField(termString);
-        term.setValue(value);
-        term.setType(Term.Type.and);
-        term.setNest(true);
-        terms.add(term);
-        return term;
-    }
-
-    public Term orNest(String termString, Object value) {
-        Term term = new Term();
-        term.setField(termString);
-        term.setValue(value);
-        term.setType(Term.Type.or);
-        term.setNest(true);
-        terms.add(term);
-        return term;
-    }
-
-
-    public R includes(String... fields) {
-        includes.addAll(Arrays.asList(fields));
-        return (R) this;
-    }
-
-    public R excludes(String... fields) {
-        excludes.addAll(Arrays.asList(fields));
-        includes.removeAll(Arrays.asList(fields));
-        return (R) this;
-    }
-
-    public R where(String key, Object value) {
-        and(key, value);
-        return (R) this;
-    }
-
-    public R where(Map<String, Object> conditions) {
-        initTermByMap(conditions);
-        return (R) this;
-    }
-
-    public Set<String> getIncludes() {
-        if (includes == null) includes = new LinkedHashSet<>();
-        return includes;
-    }
-
-    public Set<String> getExcludes() {
-        if (excludes == null) excludes = new LinkedHashSet<>();
-        return excludes;
-    }
-
-    public void setIncludes(Set<String> includes) {
-        this.includes = includes;
-    }
-
-    public void setExcludes(Set<String> excludes) {
-        this.excludes = excludes;
-    }
-
-    public List<Term> getTerms() {
-        return terms;
-    }
-
-    public void setTerms(List<Term> terms) {
-        this.terms = terms;
-    }
-
-    @Deprecated
-    public Map<String, Object> getTerm() {
-        if (term.isEmpty() && !terms.isEmpty()) {
-            terms.forEach(term1 -> {
-                if (!StringUtils.isNullOrEmpty(term1.getField()))
-                    term.put(term1.getField(), term1.getValue());
-            });
-        }
-        return term;
+    public Map<String, Object> getParams() {
+        return params;
     }
 
-    @Deprecated
-    public void setTerm(Map<String, Object> term) {
-        this.term = term;
+    public void setParams(Map<String, Object> params) {
+        this.params = params;
     }
 
     @Override
@@ -160,7 +44,7 @@ public class SqlParam<R extends SqlParam> {
         });
     }
 
-    public static  SqlParam build() {
+    public static SqlParam build() {
         return new SqlParam<>();
     }
 }

+ 0 - 150
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/Term.java

@@ -1,150 +0,0 @@
-package org.hsweb.web.bean.common;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * 执行条件
- * Created by zhouhao on 16-5-9.
- */
-public class Term {
-
-    /**
-     * 字段
-     */
-    private String field;
-
-    /**
-     * 值
-     */
-    private Object value;
-
-    /**
-     * 链接类型
-     */
-    private Type type = Type.and;
-
-    /**
-     * 条件类型
-     */
-    private TermType termType = TermType.eq;
-
-    /**
-     * 嵌套的条件
-     */
-    private List<Term> terms = new LinkedList<>();
-
-    private boolean nest = false;
-
-    public Term or(String term, Object value) {
-        Term queryTerm = new Term();
-        queryTerm.setField(term);
-        queryTerm.setValue(value);
-        queryTerm.setType(Type.or);
-        terms.add(queryTerm);
-        return this;
-    }
-
-    public Term and(String term, Object value) {
-        Term queryTerm = new Term();
-        queryTerm.setField(term);
-        queryTerm.setValue(value);
-        queryTerm.setType(Type.and);
-        terms.add(queryTerm);
-        return this;
-    }
-
-    public Term nest() {
-        return nest(null, null);
-    }
-    public Term orNest() {
-        return orNest(null, null);
-    }
-
-    public Term nest(String term, Object value) {
-        Term queryTerm = new Term();
-        queryTerm.setField(term);
-        queryTerm.setValue(value);
-        queryTerm.setType(Type.and);
-        queryTerm.setNest(true);
-        terms.add(queryTerm);
-        return queryTerm;
-    }
-
-    public Term orNest(String term, Object value) {
-        Term queryTerm = new Term();
-        queryTerm.setField(term);
-        queryTerm.setValue(value);
-        queryTerm.setType(Type.or);
-        queryTerm.setNest(true);
-        terms.add(queryTerm);
-        return queryTerm;
-    }
-
-    public String getField() {
-        return field;
-    }
-
-    public void setField(String field) {
-        if(field==null)return;
-        if (field.contains("$")) {
-            setTermType(TermType.fromString(field));
-            field = field.split("[\\$]")[0];
-        }
-        this.field = field;
-    }
-
-    public Object getValue() {
-        return value;
-    }
-
-    public void setValue(Object value) {
-        this.value = value;
-    }
-
-    public Type getType() {
-        return type;
-    }
-
-    public void setType(Type type) {
-        this.type = type;
-    }
-
-    public TermType getTermType() {
-        return termType;
-    }
-
-    public void setTermType(TermType termType) {
-        this.termType = termType;
-    }
-
-    public List<Term> getTerms() {
-        return terms;
-    }
-
-    public void setTerms(List<Term> terms) {
-        this.terms = terms;
-    }
-
-    public void setNest(boolean nest) {
-        this.nest = nest;
-    }
-
-    public boolean isNest() {
-        return nest;
-    }
-
-    public enum Type {
-        or, and;
-
-        public static Type fromString(String str) {
-            try {
-                return Type.valueOf(str.toLowerCase());
-            } catch (Exception e) {
-                return and;
-            }
-        }
-    }
-
-
-}

+ 0 - 72
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/TermType.java

@@ -1,72 +0,0 @@
-package org.hsweb.web.bean.common;
-
-/**
- * Created by zhouhao on 16-5-9.
- */
-public enum TermType {
-    /**
-     * ==
-     */
-    eq,
-    /**
-     * !=
-     */
-    not,
-    /**
-     * like
-     */
-    like,
-    notlike,
-    /**
-     * >
-     */
-    gt,
-    /**
-     * <
-     */
-    lt,
-    /**
-     * in
-     */
-    in,
-    /**
-     * notin
-     */
-    notin,
-    /**
-     * =''
-     */
-    empty,
-    /**
-     * !=''
-     */
-    notempty,
-    /**
-     * is null
-     */
-    isnull,
-    /**
-     * not null
-     */
-    notnull,
-    /**
-     * between
-     */
-    btw,
-    /**
-     * not between
-     */
-    notbtw;
-
-    public static TermType fromString(String str) {
-        if (str == null || !str.contains("$")) {
-            return eq;
-        } else {
-            try {
-                return valueOf(str.split("[\\$]")[1].toLowerCase());
-            } catch (Exception e) {
-                return eq;
-            }
-        }
-    }
-}

+ 2 - 16
hsweb-web-bean/src/main/java/org/hsweb/web/bean/common/UpdateParam.java

@@ -3,27 +3,13 @@ package org.hsweb.web.bean.common;
 /**
  * Created by zhouhao on 16-4-19.
  */
-public class UpdateParam<T> extends SqlParam<UpdateParam<T>> {
-    private T data;
+public class UpdateParam<T> extends org.hsweb.ezorm.param.UpdateParam<T,UpdateParam<T>> {
 
     public UpdateParam() {
     }
 
     public UpdateParam(T data) {
-        this.data = data;
-    }
-
-    public UpdateParam<T> set(T data) {
-        this.data = data;
-        return this;
-    }
-
-    public T getData() {
-        return data;
-    }
-
-    public void setData(T data) {
-        this.data = data;
+       set(data);
     }
 
     public static <T> UpdateParam<T> build(T data) {

+ 1 - 1
hsweb-web-concurrent/hsweb-web-concurrent-cache/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-web-concurrent</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-concurrent-cache</artifactId>

+ 2 - 6
hsweb-web-concurrent/hsweb-web-concurrent-lock/pom.xml

@@ -5,10 +5,9 @@
     <parent>
         <artifactId>hsweb-web-concurrent</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-
     <artifactId>hsweb-web-concurrent-lock</artifactId>
 
     <dependencies>
@@ -17,6 +16,7 @@
             <artifactId>spring-boot-starter</artifactId>
             <optional>true</optional>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-aop</artifactId>
@@ -28,10 +28,6 @@
             <optional>true</optional>
         </dependency>
 
-        <dependency>
-            <groupId>org.webbuilder</groupId>
-            <artifactId>wb-sql-util</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.hsweb</groupId>
             <artifactId>hsweb-web-core</artifactId>

+ 1 - 1
hsweb-web-concurrent/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <packaging>pom</packaging>

+ 1 - 1
hsweb-web-controller/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-controller</artifactId>

+ 8 - 0
hsweb-web-controller/src/main/java/org/hsweb/web/controller/ControllerExceptionTranslator.java

@@ -1,5 +1,6 @@
 package org.hsweb.web.controller;
 
+import com.alibaba.fastjson.JSON;
 import org.hsweb.web.core.exception.BusinessException;
 import org.hsweb.web.core.exception.NotFoundException;
 import org.hsweb.web.core.exception.ValidationException;
@@ -20,6 +21,13 @@ public class ControllerExceptionTranslator {
         return ResponseMessage.error(exception.getMessage(), 400);
     }
 
+    @ExceptionHandler(org.hsweb.ezorm.exception.ValidationException.class)
+    @ResponseStatus(HttpStatus.BAD_REQUEST)
+    @ResponseBody
+    ResponseMessage handleException(org.hsweb.ezorm.exception.ValidationException exception) {
+        return ResponseMessage.error(JSON.toJSONString(exception.getValidateResult()), 400);
+    }
+
 
     @ExceptionHandler(BusinessException.class)
     @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)

+ 18 - 0
hsweb-web-controller/src/main/java/org/hsweb/web/controller/ExceptionHandlerConfiguration.java

@@ -1,5 +1,6 @@
 package org.hsweb.web.controller;
 
+import org.hsweb.ezorm.exception.ValidationException;
 import org.hsweb.web.core.exception.BusinessException;
 import org.hsweb.web.core.exception.ExceptionHandler;
 import org.hsweb.web.core.message.ResponseMessage;
@@ -106,6 +107,23 @@ public class ExceptionHandlerConfiguration {
         return handler;
     }
 
+    @Bean
+    @Order(600)
+    public ExceptionHandler validationExceptionHandler() {
+        ExceptionHandler handler = new ExceptionHandler() {
+            @Override
+            public <T extends Throwable> boolean support(Class<T> e) {
+                return ClassUtils.instanceOf(e, ValidationException.class);
+            }
+
+            @Override
+            public ResponseMessage handle(Throwable e) {
+                return ResponseMessage.error(String.valueOf(((ValidationException) e).getValidateResult()), 400);
+            }
+        };
+        return handler;
+    }
+
     @Bean
     @Order(900)
     public ExceptionHandler businessExceptionHandler() {

+ 1 - 1
hsweb-web-controller/src/main/java/org/hsweb/web/controller/form/DynamicFormController.java

@@ -70,7 +70,7 @@ public class DynamicFormController {
     @Authorize(expression = "#dynamicFormAuthorizeValidator.validate(#name,#user,#paramsMap,'C')")
     public ResponseMessage insert(@PathVariable("name") String name,
                                   @RequestBody(required = true) Map<String, Object> data) throws Exception {
-        String pk = dynamicFormService.insert(name, new InsertMapParam(data));
+        String pk = dynamicFormService.insert(name,data);
         return ResponseMessage.ok(pk);
     }
 

+ 5 - 3
hsweb-web-core/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-core</artifactId>
@@ -34,10 +34,12 @@
             <artifactId>spring-boot-starter-web</artifactId>
             <optional>true</optional>
         </dependency>
+
         <dependency>
-            <groupId>org.webbuilder</groupId>
-            <artifactId>wb-sql-util</artifactId>
+            <groupId>org.hsweb</groupId>
+            <artifactId>hsweb-easy-orm</artifactId>
         </dependency>
+
     </dependencies>
 
 </project>

+ 5 - 5
hsweb-web-core/src/main/java/org/hsweb/web/core/Install.java

@@ -1,5 +1,8 @@
 package org.hsweb.web.core;
 
+import org.hsweb.ezorm.executor.SqlExecutor;
+import org.hsweb.ezorm.render.SqlAppender;
+import org.hsweb.ezorm.render.support.simple.SimpleSQL;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,9 +13,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.util.Assert;
-import org.webbuilder.sql.param.SqlAppender;
-import org.webbuilder.sql.support.common.CommonSql;
-import org.webbuilder.sql.support.executor.SqlExecutor;
 import org.webbuilder.utils.file.FileUtils;
 
 import javax.annotation.PostConstruct;
@@ -60,7 +60,7 @@ public class Install {
         try {
             boolean firstInstall = false;
             try {
-                sqlExecutor.exec(new CommonSql("select * from s_user where 1=2"));
+                sqlExecutor.exec(new SimpleSQL("select * from s_user where 1=2"));
             } catch (Exception e) {
                 firstInstall = true;
             }
@@ -86,7 +86,7 @@ public class Install {
                 });
                 sqlList.forEach((sql) -> {
                     try {
-                        sqlExecutor.exec(new CommonSql(sql));
+                        sqlExecutor.exec(new SimpleSQL(sql));
                     } catch (Exception e) {
                         logger.warn("install sql fail", e);
                     }

+ 1 - 0
hsweb-web-core/src/main/java/org/hsweb/web/core/message/ResponseMessage.java

@@ -200,4 +200,5 @@ public class ResponseMessage implements Serializable {
     public static ResponseMessage error(String message, int code) {
         return new ResponseMessage(message).setCode(code);
     }
+
 }

+ 1 - 1
hsweb-web-crawler/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
hsweb-web-dao-impl-mybatis/README.md

@@ -39,7 +39,7 @@
             <bind name="tableName" value="'s_user'"/>
         </sql>
     
-        <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+        <insert id="insert" parameterType="User" >
             <include refid="config"/>
             <include refid="BasicMapper.buildInsertSql"/>
         </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-dao-impl-mybatis</artifactId>

+ 5 - 3
hsweb-web-dao-impl-mybatis/src/main/java/org/hsweb/web/mybatis/builder/DefaultSqlParamBuilder.java

@@ -1,5 +1,7 @@
 package org.hsweb.web.mybatis.builder;
 
+import org.hsweb.ezorm.param.Term;
+import org.hsweb.ezorm.param.TermType;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.ibatis.mapping.ResultMap;
 import org.apache.ibatis.mapping.ResultMapping;
@@ -240,7 +242,7 @@ public class DefaultSqlParamBuilder {
         return javaType;
     }
 
-    public String buildSelectFields(String resultMapId, String tableName, SqlParam param) {
+    public String buildSelectFields(String resultMapId, String tableName, org.hsweb.ezorm.param.SqlParam param) {
         Map<String, Object> fieldConfig = createConfig(resultMapId);
         if (param == null) return "*";
         Set<String> includes = param.getIncludes(),
@@ -298,7 +300,7 @@ public class DefaultSqlParamBuilder {
         tmp.setSorts(param.getSorts());
         Map<String, String> propertyMapper = getPropertyMapper(fieldConfig, tmp);
         if (tmp.getSorts().isEmpty()) return "";
-        Set<Sort> sorts = new LinkedHashSet<>();
+        Set<org.hsweb.ezorm.param.Sort> sorts = new LinkedHashSet<>();
         param.getSorts().forEach(sort -> {
             String fieldName = sort.getField();
             if (StringUtils.isNullOrEmpty(fieldName)) return;
@@ -321,7 +323,7 @@ public class DefaultSqlParamBuilder {
         return " order by ".concat(sql);
     }
 
-    public Map<String, String> getPropertyMapper(Map<String, Object> fieldConfig, SqlParam param) {
+    public Map<String, String> getPropertyMapper(Map<String, Object> fieldConfig, org.hsweb.ezorm.param.SqlParam param) {
         Set<String> includes = param.getIncludes(),
                 excludes = param.getExcludes();
         boolean includesIsEmpty = includes.isEmpty(),

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/classified/ClassifiedMapper.xml

@@ -21,7 +21,7 @@
         <bind name="tableName" value="'s_classified'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/config/ConfigMapper.xml

@@ -18,7 +18,7 @@
         <bind name="tableName" value="'s_config'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/form/FormMapper.xml

@@ -25,7 +25,7 @@
         <bind name="tableName" value="'s_form'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/history/HistoryMapper.xml

@@ -22,7 +22,7 @@
         <bind name="tableName" value="'s_history'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/module/ModuleMapper.xml

@@ -22,7 +22,7 @@
         <bind name="tableName" value="'s_modules'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/resource/ResourcesMapper.xml

@@ -21,7 +21,7 @@
         <bind name="tableName" value="'s_resources'"/>
     </sql>
 
-    <insert id="insert" parameterType="Resources" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
+    <insert id="insert" parameterType="Resources" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/role/RoleMapper.xml

@@ -17,7 +17,7 @@
         <bind name="resultMapId" value="'RoleResultMap'"/>
         <bind name="tableName" value="'s_role'"/>
     </sql>
-    <insert id="insert" parameterType="Role" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="Role" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/template/TemplateMapper.xml

@@ -29,7 +29,7 @@
         <bind name="tableName" value="'s_template'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/mysql/user/UserMapper.xml

@@ -23,7 +23,7 @@
         <bind name="tableName" value="'s_user'"/>
     </sql>
 
-    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="User" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/classified/ClassifiedMapper.xml

@@ -21,7 +21,7 @@
         <bind name="tableName" value="'s_classified'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/config/ConfigMapper.xml

@@ -18,7 +18,7 @@
         <bind name="tableName" value="'s_config'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/form/FormMapper.xml

@@ -25,7 +25,7 @@
         <bind name="tableName" value="'s_form'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/history/HistoryMapper.xml

@@ -22,7 +22,7 @@
         <bind name="tableName" value="'s_history'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/module/ModuleMapper.xml

@@ -22,7 +22,7 @@
         <bind name="tableName" value="'s_modules'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/resource/ResourcesMapper.xml

@@ -21,7 +21,7 @@
         <bind name="tableName" value="'s_resources'"/>
     </sql>
 
-    <insert id="insert" parameterType="Resources" useGeneratedKeys="true" keyProperty="data.id" keyColumn="u_id">
+    <insert id="insert" parameterType="Resources" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/role/RoleMapper.xml

@@ -17,7 +17,7 @@
         <bind name="resultMapId" value="'RoleResultMap'"/>
         <bind name="tableName" value="'s_role'"/>
     </sql>
-    <insert id="insert" parameterType="Role" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="Role" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/template/TemplateMapper.xml

@@ -29,7 +29,7 @@
         <bind name="tableName" value="'s_template'"/>
     </sql>
 
-    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-impl-mybatis/src/main/resources/org/hsweb/web/dao/impl/mybatis/mapper/oracle/user/UserMapper.xml

@@ -23,7 +23,7 @@
         <bind name="tableName" value="'s_user'"/>
     </sql>
 
-    <insert id="insert" parameterType="User" useGeneratedKeys="true" keyProperty="data.id" keyColumn="U_ID">
+    <insert id="insert" parameterType="User" >
         <include refid="config"/>
         <include refid="BasicMapper.buildInsertSql"/>
     </insert>

+ 1 - 1
hsweb-web-dao-interface/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-dao-interface</artifactId>

+ 5 - 3
hsweb-web-service-impl-common/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -25,6 +25,7 @@
             <artifactId>hsweb-web-dao-impl-mybatis</artifactId>
             <scope>test</scope>
         </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -47,14 +48,15 @@
         </dependency>
 
         <dependency>
-            <groupId>org.webbuilder</groupId>
-            <artifactId>wb-sql-util</artifactId>
+            <groupId>org.hsweb</groupId>
+            <artifactId>hsweb-easy-orm</artifactId>
         </dependency>
 
         <dependency>
             <groupId>org.codehaus.groovy</groupId>
             <artifactId>groovy-all</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.hsweb</groupId>
             <artifactId>hsweb-web-concurrent-cache</artifactId>

+ 30 - 22
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/DataBaseAutoConfiguration.java

@@ -1,21 +1,24 @@
 package org.hsweb.web.service.impl;
 
+import org.hsweb.ezorm.executor.SqlExecutor;
+import org.hsweb.ezorm.meta.DatabaseMetaData;
+import org.hsweb.ezorm.meta.expand.ObjectWrapperFactory;
+import org.hsweb.ezorm.meta.expand.ValidatorFactory;
+import org.hsweb.ezorm.render.dialect.H2DatabaseMeta;
+import org.hsweb.ezorm.render.dialect.MysqlDatabaseMeta;
+import org.hsweb.ezorm.render.dialect.OracleDatabaseMeta;
+import org.hsweb.ezorm.run.Database;
+import org.hsweb.ezorm.run.simple.SimpleDatabase;
+import org.hsweb.web.core.authorize.ExpressionScopeBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.webbuilder.sql.DataBase;
-import org.webbuilder.sql.DataBaseMetaData;
-import org.webbuilder.sql.support.MysqlDataBaseMetaData;
-import org.webbuilder.sql.support.OracleDataBaseMetaData;
-import org.webbuilder.sql.support.common.CommonDataBase;
-import org.webbuilder.sql.support.executor.ObjectWrapperFactory;
-import org.webbuilder.sql.support.executor.SqlExecutor;
-import org.webbuilder.sql.validator.ValidatorFactory;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -38,30 +41,35 @@ public class DataBaseAutoConfiguration {
     @Autowired(required = false)
     private ObjectWrapperFactory objectWrapperFactory;
 
-    @PostConstruct
-    public void init() {
-
-    }
+    @Autowired(required = false)
+    private Map<String, ExpressionScopeBean> expressionScopeBeanMap;
 
     @Bean
-    public DataBase getDataBase() {
-        DataBaseMetaData dataBaseMetaData = null;
+    public Database database() {
+        DatabaseMetaData dataBaseMetaData = null;
         String driverClassName = properties.getDriverClassName();
         if (driverClassName.contains("mysql")) {
-            dataBaseMetaData = new MysqlDataBaseMetaData();
+            dataBaseMetaData = new MysqlDatabaseMeta();
         } else if (driverClassName.contains("oracle")) {
-            dataBaseMetaData = new OracleDataBaseMetaData();
+            dataBaseMetaData = new OracleDatabaseMeta();
         } else if (driverClassName.contains("h2")) {
-            dataBaseMetaData = new OracleDataBaseMetaData();
+            dataBaseMetaData = new H2DatabaseMeta();
         }
-
         if (dataBaseMetaData == null)
-            dataBaseMetaData = new OracleDataBaseMetaData();
+            dataBaseMetaData = new OracleDatabaseMeta();
+        if (objectWrapperFactory != null)
+            dataBaseMetaData.setObjectWrapperFactory(objectWrapperFactory);
         if (validatorFactory != null)
             dataBaseMetaData.setValidatorFactory(validatorFactory);
-        CommonDataBase dataBase = new CommonDataBase(dataBaseMetaData, sqlExecutor);
-        if (objectWrapperFactory != null)
-            dataBase.setWrapperFactory(objectWrapperFactory);
+        dataBaseMetaData.init();
+        SimpleDatabase dataBase = new SimpleDatabase(dataBaseMetaData, sqlExecutor) {
+            @Override
+            public Map<String, Object> getTriggerContextRoot() {
+                if (null != null)
+                    return new HashMap<>(expressionScopeBeanMap);
+                return super.getTriggerContextRoot();
+            }
+        };
         return dataBase;
     }
 }

+ 15 - 18
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/basic/SqlExecutorService.java

@@ -1,25 +1,22 @@
 package org.hsweb.web.service.impl.basic;
 
+import org.hsweb.ezorm.executor.AbstractJdbcSqlExecutor;
+import org.hsweb.ezorm.executor.SQL;
+import org.hsweb.ezorm.meta.expand.ObjectWrapper;
+import org.hsweb.ezorm.meta.expand.SimpleMapWrapper;
+import org.hsweb.ezorm.render.support.simple.SimpleSQL;
 import org.hsweb.web.core.authorize.ExpressionScopeBean;
 import org.springframework.jdbc.datasource.DataSourceUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.webbuilder.sql.SQL;
-import org.webbuilder.sql.support.common.CommonSql;
-import org.webbuilder.sql.support.executor.AbstractJdbcSqlExecutor;
-import org.webbuilder.sql.support.executor.HashMapWrapper;
-import org.webbuilder.sql.support.executor.ObjectWrapper;
 
 import javax.annotation.Resource;
 import javax.sql.DataSource;
 import java.sql.Connection;
+import java.sql.SQLException;
 import java.util.List;
 import java.util.Map;
 
-/**
- * SQL执行服务类,用于执行原生sql
- * Created by 浩 on 2015-10-09 0009.
- */
 @Service(value = "sqlExecutor")
 @Transactional(rollbackFor = Throwable.class)
 public class SqlExecutorService extends AbstractJdbcSqlExecutor implements ExpressionScopeBean {
@@ -39,37 +36,37 @@ public class SqlExecutorService extends AbstractJdbcSqlExecutor implements Expre
 
     @Override
     @Transactional(readOnly = true)
-    public <T> List<T> list(SQL sql, ObjectWrapper<T> wrapper) throws Exception {
+    public <T> List<T> list(SQL sql, ObjectWrapper<T> wrapper) throws SQLException {
         return super.list(sql, wrapper);
     }
 
     @Override
     @Transactional(readOnly = true)
-    public <T> T single(SQL sql, ObjectWrapper<T> wrapper) throws Exception {
+    public <T> T single(SQL sql, ObjectWrapper<T> wrapper) throws SQLException {
         return super.single(sql, wrapper);
     }
 
     @Transactional(readOnly = true)
-    public List<Map<String, Object>> list(SQL sql) throws Exception {
-        List<Map<String, Object>> data = list(sql, new HashMapWrapper());
+    public List<Map<String, Object>> list(SQL sql) throws SQLException {
+        List<Map<String, Object>> data = list(sql, new SimpleMapWrapper());
         return data;
     }
 
     @Transactional(readOnly = true)
     public Map<String, Object> single(SQL sql) throws Exception {
-        Map<String, Object> data = single(sql, new HashMapWrapper());
+        Map<String, Object> data = single(sql, new SimpleMapWrapper());
         return data;
     }
 
     @Transactional(readOnly = true)
     public List<Map<String, Object>> list(String sql) throws Exception {
-        List<Map<String, Object>> data = list(create(sql), new HashMapWrapper());
+        List<Map<String, Object>> data = list(create(sql), new SimpleMapWrapper());
         return data;
     }
 
     @Transactional(readOnly = true)
     public List<Map<String, Object>> list(String sql, Map<String, Object> param) throws Exception {
-        List<Map<String, Object>> data = list(create(sql, param), new HashMapWrapper());
+        List<Map<String, Object>> data = list(create(sql, param), new SimpleMapWrapper());
         return data;
     }
 
@@ -86,11 +83,11 @@ public class SqlExecutorService extends AbstractJdbcSqlExecutor implements Expre
     }
 
     public SQL create(String sql) {
-        return new CommonSql(sql);
+        return new SimpleSQL(sql);
     }
 
     public SQL create(String sql, Map<String, Object> param) {
-        CommonSql sql1 = new CommonSql(sql, param);
+        SimpleSQL sql1 = new SimpleSQL(sql, param);
         return sql1;
     }
 }

+ 102 - 24
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DefaultFormParser.java

@@ -3,24 +3,27 @@ package org.hsweb.web.service.impl.form;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import org.hibernate.validator.constraints.Length;
+import org.hsweb.ezorm.meta.FieldMetaData;
+import org.hsweb.ezorm.meta.TableMetaData;
+import org.hsweb.ezorm.meta.converter.ClobValueConverter;
+import org.hsweb.ezorm.meta.converter.DateTimeConverter;
+import org.hsweb.ezorm.run.simple.trigger.ScriptTraggerSupport;
 import org.hsweb.web.bean.po.form.Form;
-import org.hsweb.web.core.authorize.ExpressionScopeBean;
-import org.hsweb.web.service.impl.form.trigger.ScriptTrigger;
+import org.hsweb.web.core.Install;
+import org.hsweb.web.service.form.FormParser;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.Assert;
 import org.springframework.util.ReflectionUtils;
-import org.webbuilder.sql.FieldMetaData;
-import org.webbuilder.sql.TableMetaData;
-import org.webbuilder.sql.trigger.ScriptTriggerSupport;
 import org.webbuilder.utils.common.BeanUtils;
 import org.webbuilder.utils.common.StringUtils;
+import org.webbuilder.utils.script.engine.DynamicScriptEngine;
+import org.webbuilder.utils.script.engine.DynamicScriptEngineFactory;
 
 import java.lang.reflect.Field;
+import java.sql.JDBCType;
 import java.util.*;
 
 /**
@@ -30,19 +33,89 @@ import java.util.*;
 public class DefaultFormParser implements FormParser {
 
     @Autowired(required = false)
-    private Map<String, ExpressionScopeBean> expressionScopeBeanMap;
+    private List<FormParser.Listener> listeners;
+
+    public void initField(FieldMetaData fieldMetaData) {
+
+        if (fieldMetaData.getComment() == null)
+            fieldMetaData.setComment("");
+        String db = Install.getDatabaseType();
+        if (fieldMetaData.getDataType() == null) {
+            JDBCType jdbcType = fieldMetaData.getJdbcType();
+            if (jdbcType == null) throw new UnsupportedOperationException("请指定jdbcType或者dataType");
+            switch (jdbcType) {
+                case VARCHAR:
+                    String len = fieldMetaData.getProperty("data-type-len", "256").toString();
+                    if (db.equals("mysql")) {
+                        fieldMetaData.setDataType("varchar(" + len + ")");
+                    } else if (db.equals("oracle") || db.equals("h2")) {
+                        fieldMetaData.setDataType("varchar2(" + len + ")");
+                    }
+                    break;
+                case TINYINT:
+                    if (db.equals("mysql")) {
+                        fieldMetaData.setDataType("tinyint");
+                    } else if (db.equals("oracle") || db.equals("h2")) {
+                        fieldMetaData.setDataType("number(10)");
+                    }
+                case NUMERIC:
+                    len = fieldMetaData.getProperty("data-type-len", "32").toString();
+                    if (db.equals("mysql")) {
+                        fieldMetaData.setDataType((len.contains(",") ? "double" : "int") + "(" + len + ")");
+                    } else if (db.equals("oracle") || db.equals("h2")) {
+                        fieldMetaData.setDataType("number(" + len + ")");
+                    }
+                case DATE:
+                    if (db.equals("mysql")) {
+                        fieldMetaData.setDataType("datetime");
+                    } else if (db.equals("oracle") || db.equals("h2")) {
+                        fieldMetaData.setDataType("date");
+                    }
+                case CLOB:
+                    if (db.equals("mysql")) {
+                        fieldMetaData.setDataType("text");
+                    } else if (db.equals("oracle") || db.equals("h2")) {
+                        fieldMetaData.setDataType("clob");
+                    }
+            }
+        }
+        if (fieldMetaData.getJdbcType() == null) {
+            String dataType = fieldMetaData.getDataType();
+            if (dataType != null) {
+                if (dataType.contains("varchar")) {
+                    fieldMetaData.setJdbcType(JDBCType.VARCHAR);
+                } else if (dataType.contains("date")
+                        || dataType.contains("timestamp")
+                        || dataType.contains("datetime")) {
+                    fieldMetaData.setJdbcType(JDBCType.DATE);
+                    String format = fieldMetaData.getProperty("date-format", "yyyy-MM-dd HH:mm:ss").toString();
+                    fieldMetaData.setValueConverter(new DateTimeConverter(format, fieldMetaData.getJavaType()));
+                } else if (dataType.contains("clob")) {
+                    fieldMetaData.setJdbcType(JDBCType.CLOB);
+                    fieldMetaData.setValueConverter(new ClobValueConverter());
+                } else if (dataType.contains("number") ||
+                        dataType.contains("int") ||
+                        dataType.contains("double") ||
+                        dataType.contains("tinyint")) {
+                    fieldMetaData.setJdbcType(JDBCType.NUMERIC);
+                } else {
+                    fieldMetaData.setJdbcType(JDBCType.VARCHAR);
+                }
+            }
+        }
+    }
 
     @Override
     public TableMetaData parse(Form form) {
+        DynamicScriptEngine scriptEngine = DynamicScriptEngineFactory.getEngine("groovy");
         String meta = form.getMeta();
         TableMetaData metaData = new TableMetaData();
         metaData.setName(form.getName());
-        metaData.setLocation(form.getId());
         metaData.setComment(form.getRemark());
         JSONObject object = JSON.parseObject(meta);
         object.forEach((id, field) -> {
             FieldMetaData fieldMeta = new FieldMetaData();
-            fieldMeta.attr("field-id", id);
+            fieldMeta.setProperty("field-id", id);
             JSONArray obj = ((JSONArray) field);
             obj.forEach((defT) -> {
                 JSONObject def = ((JSONObject) defT);
@@ -54,19 +127,20 @@ public class DefaultFormParser implements FormParser {
                         jsonArray.forEach(jsonObject -> {
                             String name = jsonObject.getString("key");
                             String script = jsonObject.getString("value");
-                            ScriptTrigger scriptTrigger = new ScriptTrigger();
-                            scriptTrigger.setId(String.valueOf(script.hashCode()));
-                            if (expressionScopeBeanMap != null)
-                                scriptTrigger.setDefaultVar(expressionScopeBeanMap);
-                            scriptTrigger.setName(name);
-                            scriptTrigger.setContent(script);
-                            scriptTrigger.setLanguage("groovy");
-                            scriptTrigger.init();
-                            metaData.on(scriptTrigger);
+                            String scriptId = String.valueOf(script.hashCode());
+                            if (!scriptEngine.compiled(scriptId)) {
+                                try {
+                                    scriptEngine.compile(scriptId, script);
+                                } catch (Exception e) {
+                                    throw new RuntimeException("编译脚本异常", e);
+                                }
+                            }
+                            ScriptTraggerSupport scriptTrigger = new ScriptTraggerSupport(scriptEngine, scriptId);
+                            metaData.on(name, scriptTrigger);
                         });
                         return;
                     }
-                    metaData.attr(key, value);
+                    metaData.setProperty(key, value);
                     return;
                 }
                 if ("validator-list".equals(key)) {
@@ -99,14 +173,18 @@ public class DefaultFormParser implements FormParser {
                         } catch (Throwable e) {
                         }
                     }
-                    fieldMeta.attr(key, value);
+                    fieldMeta.setProperty(key, value);
                 }
             });
             //name为空的时候 不保持此字段
             if (!"main".equals(id) && !StringUtils.isNullOrEmpty(fieldMeta.getName())) {
+                initField(fieldMeta);
                 metaData.addField(fieldMeta);
             }
         });
+        if (listeners != null) {
+            listeners.forEach(listener -> listener.afterParse(metaData));
+        }
         return metaData;
     }
 
@@ -146,12 +224,12 @@ public class DefaultFormParser implements FormParser {
         TableMetaData metaData = parse(form);
         Element html = Jsoup.parse(form.getHtml());
         metaData.getFields().forEach((field) -> {
-            String field_id = field.attrWrapper("field-id", "").toString();
+            String field_id = field.getProperty("field-id", "").toString();
             if (!"".equals(field_id)) {
                 Elements elements = html.select("[field-id=\"" + field_id + "\"]");
                 Element input = elements.first();
                 if (null != input) {
-                    List<Map> domProperty = field.attrWrapper("domProperty", "[]").toList();
+                    List<Map> domProperty = field.getProperty("domProperty", "[]").toList();
                     domProperty.forEach((property) -> {
                         Object value = property.get("value");
                         Object key = property.get("key");
@@ -160,7 +238,7 @@ public class DefaultFormParser implements FormParser {
                     });
                     input.attr("name", field.getName());
                     input.attr("id", field.getName());
-                    input.attr("class", field.attrWrapper("class").toString());
+                    input.attr("class", field.getProperty("class").toString());
                 }
             }
         });

+ 77 - 139
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DynamicFormServiceImpl.java

@@ -1,10 +1,16 @@
 package org.hsweb.web.service.impl.form;
 
 import com.alibaba.fastjson.JSON;
+import org.hsweb.ezorm.meta.FieldMetaData;
+import org.hsweb.ezorm.meta.TableMetaData;
+import org.hsweb.ezorm.meta.expand.PropertyWrapper;
+import org.hsweb.ezorm.run.*;
 import org.hsweb.concurrent.lock.annotation.LockName;
 import org.hsweb.concurrent.lock.annotation.ReadLock;
 import org.hsweb.concurrent.lock.annotation.WriteLock;
 import org.hsweb.web.bean.common.*;
+import org.hsweb.web.bean.common.QueryParam;
+import org.hsweb.web.bean.common.UpdateParam;
 import org.hsweb.web.bean.po.GenericPo;
 import org.hsweb.web.bean.po.form.Form;
 import org.hsweb.web.bean.po.history.History;
@@ -14,6 +20,7 @@ import org.hsweb.web.core.exception.BusinessException;
 import org.hsweb.web.core.exception.NotFoundException;
 import org.hsweb.web.service.form.DynamicFormDataValidator;
 import org.hsweb.web.service.form.DynamicFormService;
+import org.hsweb.web.service.form.FormParser;
 import org.hsweb.web.service.form.FormService;
 import org.hsweb.web.service.history.HistoryService;
 import org.slf4j.Logger;
@@ -23,16 +30,13 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.webbuilder.office.excel.ExcelIO;
 import org.webbuilder.office.excel.config.Header;
-import org.webbuilder.sql.*;
-import org.webbuilder.sql.exception.CreateException;
-import org.webbuilder.sql.exception.TriggerException;
-import org.webbuilder.sql.param.ExecuteCondition;
-import org.webbuilder.sql.trigger.TriggerResult;
 import org.webbuilder.utils.common.StringUtils;
 
 import javax.annotation.Resource;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.sql.JDBCType;
+import java.sql.SQLException;
 import java.util.*;
 
 /**
@@ -48,7 +52,7 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     protected FormParser formParser;
 
     @Autowired
-    protected DataBase dataBase;
+    protected Database database;
 
     @Resource
     protected FormService formService;
@@ -74,17 +78,18 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
             default:
                 dataType = "varchar(32)";
         }
-        FieldMetaData id = new FieldMetaData("u_id", String.class, dataType);
-        id.setPrimaryKey(true);
-        id.setNotNull(true);
+        FieldMetaData id = new FieldMetaData("u_id", String.class, dataType, JDBCType.VARCHAR);
         id.setComment("主键");
-        metaData.attr("primaryKey", "u_id");
+        id.setProperty("read-only", true);
+
+        metaData.setPrimaryKeys(new HashSet<>(Arrays.asList("u_id")));
+        metaData.setProperty("primaryKey", "u_id");
         metaData.addField(id);
 
     }
 
     @Override
-    public Object parseMeta(Form form) throws Exception {
+    public TableMetaData parseMeta(Form form) throws Exception {
         return formParser.parse(form);
     }
 
@@ -98,18 +103,18 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
         //首次部署
         if (history == null) {
             try {
-                dataBase.createTable(metaData);
-            } catch (CreateException e) {
-                dataBase.updateTable(metaData);
+                database.createTable(metaData);
+            } catch (SQLException e) {
+                database.reloadTable(metaData);
             }
         } else {
             Form lastDeploy = JSON.parseObject(history.getChangeAfter(), Form.class);
             TableMetaData lastDeployMetaData = formParser.parse(lastDeploy);
             initDefaultField(lastDeployMetaData);
             //向上发布
-            dataBase.updateTable(lastDeployMetaData);//先放入旧的结构
+            database.reloadTable(lastDeployMetaData);//先放入旧的结构
             //更新结构
-            dataBase.alterTable(metaData);
+            database.alterTable(metaData);
         }
     }
 
@@ -117,17 +122,19 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     @WriteLock
     @LockName(value = "'form.lock.'+#form.name", isExpression = true)
     public void unDeploy(Form form) throws Exception {
-        dataBase.removeTable(form.getName());
+        database.removeTable(form.getName());
     }
 
     public Table getTableByName(String name) throws Exception {
-        Table table = dataBase.getTable(name.toUpperCase());
-        if (table == null)
-            table = dataBase.getTable(name.toLowerCase());
-        if (table == null) {
+        try {
+            Table table = database.getTable(name);
+            if (table == null) {
+                throw new NotFoundException("表单[" + name + "]不存在");
+            }
+            return table;
+        } catch (Exception e) {
             throw new NotFoundException("表单[" + name + "]不存在");
         }
-        return table;
     }
 
     @Override
@@ -138,12 +145,11 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
         PagerResult<T> result = new PagerResult<>();
         Table table = getTableByName(name);
         Query query = table.createQuery();
-        QueryParamProxy proxy = QueryParamProxy.build(param);
-        int total = query.total(proxy);
+        query.setParam(param);
+        int total = query.total();
         result.setTotal(total);
         param.rePaging(total);
-        proxy = QueryParamProxy.build(param);
-        result.setData(query.list(proxy));
+        result.setData(query.list(param.getPageIndex(), param.getPageSize()));
         return result;
     }
 
@@ -153,10 +159,8 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     @Transactional(readOnly = true)
     public <T> List<T> select(String name, QueryParam param) throws Exception {
         Table table = getTableByName(name);
-        Query query = table.createQuery();
-        param.setPaging(false);
-        QueryParamProxy proxy = QueryParamProxy.build(param);
-        return query.list(proxy);
+        Query query = table.createQuery().setParam(param);
+        return query.list();
     }
 
     @Override
@@ -165,33 +169,32 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     @Transactional(readOnly = true)
     public int total(String name, QueryParam param) throws Exception {
         Table table = getTableByName(name);
-        Query query = table.createQuery();
-        param.setPaging(false);
-        QueryParamProxy proxy = QueryParamProxy.build(param);
-        return query.total(proxy);
+        Query query = table.createQuery().setParam(param);
+        return query.total();
     }
 
     @Override
     @ReadLock
     @LockName(value = "'form.lock.'+#name", isExpression = true)
-    public String insert(String name, InsertParam<Map<String, Object>> param) throws Exception {
+    public String insert(String name, Map<String, Object> data) throws Exception {
         Table table = getTableByName(name);
-        Insert insert = table.createInsert();
-        InsertParamProxy paramProxy = InsertParamProxy.build(param);
         String primaryKeyName = getPrimaryKeyName(name);
         String pk = GenericPo.createUID();
-        paramProxy.value(primaryKeyName, pk);
-        insert.insert(paramProxy);
+        data.put(primaryKeyName, pk);
+        Insert insert = table.createInsert().value(data);
+        insert.exec();
         return pk;
     }
 
     @Override
     public String saveOrUpdate(String name, Map<String, Object> data) throws Exception {
-        String id = getRepeatDataId(name, data);
+        String id = (String) data.get(getPrimaryKeyName(name));
+        if (id == null)
+            id = getRepeatDataId(name, data);
         if (id != null) {
-            update(name, new UpdateMapParam(data).where(getPrimaryKeyName(name), id));
+            updateByPk(name, id, UpdateParam.build(data));
         } else {
-            id = insert(name, new InsertMapParam(data));
+            id = insert(name, data);
         }
         return id;
     }
@@ -214,8 +217,8 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     public boolean deleteByPk(String name, String pk) throws Exception {
         String primaryKeyName = getPrimaryKeyName(name);
         Table table = getTableByName(name);
-        Delete delete = table.createDelete();
-        return delete.delete(DeleteParamProxy.build(new DeleteParam()).where(primaryKeyName, pk)) == 1;
+        Delete delete = table.createDelete().where(primaryKeyName, pk);
+        return delete.exec() == 1;
     }
 
     @Override
@@ -224,7 +227,8 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     public int delete(String name, DeleteParam where) throws Exception {
         Table table = getTableByName(name);
         Delete delete = table.createDelete();
-        return delete.delete(DeleteParamProxy.build(where));
+        delete.setParam(where);
+        return delete.exec();
     }
 
     @Override
@@ -232,10 +236,9 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     @LockName(value = "'form.lock.'+#name", isExpression = true)
     public int updateByPk(String name, String pk, UpdateParam<Map<String, Object>> param) throws Exception {
         Table table = getTableByName(name);
-        Update update = table.createUpdate();
-        UpdateParamProxy paramProxy = UpdateParamProxy.build(param);
-        paramProxy.where(getPrimaryKeyName(name), pk);
-        return update.update(paramProxy);
+        Update update = table.createUpdate().setParam(param);
+        update.where(getPrimaryKeyName(name), pk);
+        return update.exec();
     }
 
     @Override
@@ -243,27 +246,24 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     @LockName(value = "'form.lock.'+#name", isExpression = true)
     public int update(String name, UpdateParam<Map<String, Object>> param) throws Exception {
         Table table = getTableByName(name);
-        Update update = table.createUpdate();
-        UpdateParamProxy paramProxy = UpdateParamProxy.build(param);
-        return update.update(paramProxy);
+        Update update = table.createUpdate().setParam(param);
+        return update.exec();
     }
 
     @ReadLock
     @LockName(value = "'form.lock.'+#tableName", isExpression = true)
     public String getPrimaryKeyName(String tableName) throws Exception {
         Table table = getTableByName(tableName);
-        return table.getMetaData().attrWrapper("primaryKey", "u_id").toString();
+        return table.getMeta().getProperty("primaryKey", "u_id").toString();
     }
 
     @Override
     @ReadLock
     @LockName(value = "'form.lock.'+#name", isExpression = true)
     public <T> T selectByPk(String name, Object pk) throws Exception {
-        Table table = getTableByName(name);
-        Query query = table.createQuery();
-        QueryParamProxy proxy = new QueryParamProxy();
-        proxy.where(getPrimaryKeyName(name), pk);
-        return query.single(proxy);
+        Table<T> table = getTableByName(name);
+        Query<T> query = table.createQuery().where(getPrimaryKeyName(name), pk);
+        return query.single();
     }
 
     @Override
@@ -273,15 +273,15 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
     public void exportExcel(String name, QueryParam param, OutputStream outputStream) throws Exception {
         List<Object> dataList = select(name, param);
         Table table = getTableByName(name);
-        TableMetaData metaData = table.getMetaData();
+        TableMetaData metaData = table.getMeta();
         List<Header> headers = new LinkedList<>();
         Map<String, Object> sample = dataList.isEmpty() ? new HashMap<>() : (Map) dataList.get(0);
         int[] index = new int[1];
         index[0] = 1;
         metaData.getFields().forEach(fieldMetaData -> {
-            ValueWrapper valueWrapper = fieldMetaData.attrWrapper("export-excel", false);
-            if (valueWrapper.toBoolean()) {
-                String title = fieldMetaData.attrWrapper("export-header", fieldMetaData.getComment()).toString();
+            PropertyWrapper valueWrapper = fieldMetaData.getProperty("export-excel", false);
+            if (valueWrapper.isTrue()) {
+                String title = fieldMetaData.getProperty("export-header", fieldMetaData.getComment()).toString();
                 if (StringUtils.isNullOrEmpty(title)) {
                     title = "字段" + index[0]++;
                 }
@@ -299,10 +299,12 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
                 headers.add(new Header(title, field));
             }
         });
-        if (metaData.triggerSupport("export.excel")) {
+        if (metaData.triggerIsSupport("export.excel")) {
             Map<String, Object> var = new HashMap<>();
             if (expressionScopeBeanMap != null)
                 var.putAll(expressionScopeBeanMap);
+            var.put("database", database);
+            var.put("table", table);
             var.put("dataList", dataList);
             var.put("headers", headers);
             metaData.on("export.excel", var);
@@ -325,26 +327,25 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
         List<Map<String, Object>> dataList = new LinkedList<>();
         Map<String, String> headerMapper = new HashMap<>();
         Table table = getTableByName(name);
-        TableMetaData metaData = table.getMetaData();
+        TableMetaData metaData = table.getMeta();
         metaData.getFields().forEach(fieldMetaData -> {
-            ValueWrapper valueWrapper = fieldMetaData.attrWrapper("importExcel", true);
-            if (valueWrapper.toBoolean()) {
-                String title = fieldMetaData.attrWrapper("excelHeader", fieldMetaData.getComment()).toString();
+            PropertyWrapper valueWrapper = fieldMetaData.getProperty("importExcel", true);
+            if (valueWrapper.isTrue()) {
+                String title = fieldMetaData.getProperty("excelHeader", fieldMetaData.getComment()).toString();
                 String field = fieldMetaData.getName();
                 headerMapper.put(title, field);
             }
         });
-        if (metaData.triggerSupport("export.import.before")) {
+        if (metaData.triggerIsSupport("export.import.before")) {
             Map<String, Object> var = new HashMap<>();
             var.put("headerMapper", headerMapper);
             var.put("excelData", excelData);
             var.put("dataList", dataList);
+            var.put("database", database);
+            var.put("table", table);
             if (expressionScopeBeanMap != null)
                 var.putAll(expressionScopeBeanMap);
-            TriggerResult triggerResult = metaData.on("export.import.before", var);
-            if (!triggerResult.isSuccess()) {
-                throw new TriggerException(triggerResult.getMessage());
-            }
+            metaData.on("export.import.before", var);
         }
         excelData.forEach(data -> {
             Map<String, Object> newData = new HashMap<>();
@@ -363,18 +364,17 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
         for (Map<String, Object> map : dataList) {
             index++;
             try {
-                if (metaData.triggerSupport("export.import.each")) {
+                if (metaData.triggerIsSupport("export.import.each")) {
                     Map<String, Object> var = new HashMap<>();
                     var.put("headerMapper", headerMapper);
                     var.put("excelData", excelData);
                     var.put("dataList", dataList);
                     var.put("data", map);
+                    var.put("database", database);
+                    var.put("table", table);
                     if (expressionScopeBeanMap != null)
                         var.putAll(expressionScopeBeanMap);
-                    TriggerResult triggerResult = metaData.on("export.import.each", var);
-                    if (!triggerResult.isSuccess()) {
-                        throw new TriggerException(triggerResult.getMessage());
-                    }
+                    metaData.on("export.import.each", var);
                 }
                 saveOrUpdate(name, map);
                 success++;
@@ -393,66 +393,4 @@ public class DynamicFormServiceImpl implements DynamicFormService, ExpressionSco
         result.put("errorMessage", errorMessage);
         return result;
     }
-
-    public static class QueryParamProxy extends org.webbuilder.sql.param.query.QueryParam {
-        public QueryParamProxy orderBy(String mode, Set<String> fields) {
-            addProperty("order_by", fields);
-            addProperty("order_by_mod", mode);
-            return this;
-        }
-
-        public static QueryParamProxy build(QueryParam param) {
-            QueryParamProxy proxy = new QueryParamProxy();
-            proxy.setConditions(term2cdt(param.getTerms()));
-            proxy.exclude(param.getExcludes());
-            proxy.include(param.getIncludes());
-            proxy.orderBy(param.getSortOrder(), param.getSortField());
-            proxy.doPaging(param.getPageIndex(), param.getPageSize());
-            proxy.setPaging(param.isPaging());
-            return proxy;
-        }
-    }
-
-    public static class UpdateParamProxy extends org.webbuilder.sql.param.update.UpdateParam {
-        public static UpdateParamProxy build(UpdateParam<Map<String, Object>> param) {
-            UpdateParamProxy proxy = new UpdateParamProxy();
-            proxy.setConditions(term2cdt(param.getTerms()));
-            proxy.exclude(param.getExcludes());
-            proxy.include(param.getIncludes());
-            proxy.set(param.getData());
-            return proxy;
-        }
-    }
-
-    public static class InsertParamProxy extends org.webbuilder.sql.param.insert.InsertParam {
-        public static InsertParamProxy build(InsertParam<Map<String, Object>> param) {
-            InsertParamProxy proxy = new InsertParamProxy();
-            proxy.values(param.getData());
-            return proxy;
-        }
-    }
-
-    public static class DeleteParamProxy extends org.webbuilder.sql.param.delete.DeleteParam {
-        public static DeleteParamProxy build(DeleteParam param) {
-            DeleteParamProxy proxy = new DeleteParamProxy();
-            proxy.setConditions(term2cdt(param.getTerms()));
-            return proxy;
-        }
-    }
-
-    protected static Set<ExecuteCondition> term2cdt(List<Term> terms) {
-        Set<ExecuteCondition> set = new LinkedHashSet<>();
-        terms.forEach(term -> {
-            ExecuteCondition executeCondition = new ExecuteCondition();
-            executeCondition.setAppendType(term.getType().toString());
-            executeCondition.setField(term.getField());
-            executeCondition.setValue(term.getValue());
-            executeCondition.setQueryType(term.getTermType().toString().toUpperCase());
-            executeCondition.setSql(false);
-            if (!term.getTerms().isEmpty())
-                executeCondition.setNest(term2cdt(term.getTerms()));
-            set.add(executeCondition);
-        });
-        return set;
-    }
 }

+ 0 - 13
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormParser.java

@@ -1,13 +0,0 @@
-package org.hsweb.web.service.impl.form;
-
-import org.hsweb.web.bean.po.form.Form;
-import org.webbuilder.sql.TableMetaData;
-
-/**
- * Created by zhouhao on 16-4-20.
- */
-public interface FormParser {
-    TableMetaData parse(Form form);
-
-    String parseHtml(Form form);
-}

+ 10 - 11
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormServiceImpl.java

@@ -2,13 +2,13 @@ package org.hsweb.web.service.impl.form;
 
 import com.alibaba.fastjson.JSON;
 import org.hsweb.web.bean.common.InsertParam;
-import org.hsweb.web.core.authorize.annotation.Authorize;
 import org.hsweb.web.bean.common.QueryParam;
 import org.hsweb.web.bean.common.UpdateParam;
 import org.hsweb.web.bean.po.form.Form;
 import org.hsweb.web.bean.po.history.History;
 import org.hsweb.web.dao.form.FormMapper;
 import org.hsweb.web.service.form.DynamicFormService;
+import org.hsweb.web.service.form.FormParser;
 import org.hsweb.web.service.form.FormService;
 import org.hsweb.web.service.history.HistoryService;
 import org.hsweb.web.service.impl.AbstractServiceImpl;
@@ -75,7 +75,8 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
 
     @Override
     public String insert(Form data) throws Exception {
-        List<Form> old = this.select(new QueryParam().where("name", data.getName()));
+
+        List<Form> old = this.select(QueryParam.build().where("name", data.getName()));
         Assert.isTrue(old.isEmpty(), "表单 [" + data.getName() + "] 已存在!");
         data.setCreateDate(new Date());
         data.setVersion(1);
@@ -92,7 +93,7 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
         assertNotNull(old, "表单不存在!");
         data.setUpdateDate(new Date());
         data.setRevision(old.getRevision() + 1);
-        UpdateParam<Form> param = new UpdateParam<>(data).excludes("createDate", "release", "version", "using");
+        UpdateParam<Form> param = UpdateParam.build(data).excludes("createDate", "release", "version", "using");
         return getMapper().update(param);
     }
 
@@ -119,7 +120,7 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
 
     @Override
     public Form selectByVersion(String name, int version) throws Exception {
-        QueryParam param = QueryParam.newInstance()
+        QueryParam param = QueryParam.build()
                 .where("name", name).where("version", version);
         List<Form> formList = formMapper.selectLatestList(param);
         return formList.size() > 0 ? formList.get(0) : null;
@@ -127,8 +128,8 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
 
     @Override
     public Form selectLatest(String name) throws Exception {
-        QueryParam param = QueryParam.newInstance()
-                .where("name", name).orderBy("version").desc().doPaging(0, 1);
+        QueryParam param = QueryParam.build()
+                .where("name", name).orderBy("version").asc();
         List<Form> formList = formMapper.selectLatestList(param);
         return formList.size() > 0 ? formList.get(0) : null;
     }
@@ -152,7 +153,7 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
         old.setUsing(true);
         dynamicFormService.deploy(old);
         old.setRelease(old.getRevision());//发布修订版本
-        getMapper().update(new UpdateParam<>(old).includes("using", "release").where("id", old.getId()));
+        getMapper().update(UpdateParam.build(old).includes("using", "release").where("id", old.getId()));
         //加入发布历史记录
         History history = History.newInstance("form.deploy." + old.getName());
         history.setPrimaryKeyName("id");
@@ -165,9 +166,9 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
     @Override
     @Transactional(rollbackFor = Throwable.class)
     @Caching(evict = {
-            @CacheEvict(value = {CACHE_KEY + ".deploy"},key = "'deploy.'+target.selectByPk(#formId).getName()+'.html'"),
+            @CacheEvict(value = {CACHE_KEY + ".deploy"}, key = "'deploy.'+target.selectByPk(#formId).getName()+'.html'"),
             @CacheEvict(value = {CACHE_KEY + ".deploy"}, key = "'deploy.'+target.selectByPk(#formId).getName()"),
-            @CacheEvict(value = {CACHE_KEY},key = "'using.'+target.selectByPk(#formId).getName()")
+            @CacheEvict(value = {CACHE_KEY}, key = "'using.'+target.selectByPk(#formId).getName()")
     })
     public void unDeploy(String formId) throws Exception {
         Form old = this.selectByPk(formId);
@@ -209,6 +210,4 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
     public Form selectUsing(String name) throws Exception {
         return formMapper.selectUsing(name);
     }
-
-
 }

+ 0 - 27
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/trigger/ScriptTrigger.java

@@ -1,27 +0,0 @@
-package org.hsweb.web.service.impl.form.trigger;
-
-import org.webbuilder.sql.exception.TriggerException;
-import org.webbuilder.sql.trigger.ScriptTriggerSupport;
-import org.webbuilder.sql.trigger.TriggerResult;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Created by zhouhao on 16-5-17.
- */
-public class ScriptTrigger extends ScriptTriggerSupport {
-    private Map<String, ?> defaultVar = new HashMap<>();
-
-    @Override
-    public TriggerResult execute(Map<String, Object> root) throws TriggerException {
-        root.putAll(defaultVar);
-        return super.execute(root);
-    }
-
-    public void setDefaultVar(Map<String, ?> defaultVar) {
-        this.defaultVar = defaultVar;
-    }
-
-
-}

+ 27 - 24
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/validator/GroovyDycBeanValidator.java

@@ -1,11 +1,12 @@
 package org.hsweb.web.service.impl.form.validator;
 
+import org.apache.commons.beanutils.BeanMap;
+import org.apache.commons.beanutils.BeanUtils;
+import org.hsweb.ezorm.exception.ValidationException;
+import org.hsweb.ezorm.meta.expand.Validator;
 import org.hsweb.web.bean.valid.ValidResults;
 import org.hsweb.web.core.exception.BusinessException;
-import org.hsweb.web.core.exception.ValidationException;
 import org.springframework.util.ReflectionUtils;
-import org.webbuilder.sql.validator.Validator;
-import org.webbuilder.utils.common.BeanUtils;
 import org.webbuilder.utils.script.engine.DynamicScriptEngine;
 import org.webbuilder.utils.script.engine.DynamicScriptEngineFactory;
 
@@ -31,29 +32,25 @@ public class GroovyDycBeanValidator implements Validator {
         this.hibernateValidator = hibernateValidator;
     }
 
-    public List valid(Object data, boolean insert) {
+    public boolean validateMap(Map<Object, Object> data, Operation operation) {
         ValidResults results = new ValidResults();
         try {
-            if (!(data instanceof Map)) {
-                throw new ValidationException("数据类型错误!");
-            }
-            Class validatorTargetClass = (Class)engine.execute(className, new HashMap<>()).getResult();
+            Class validatorTargetClass = (Class) engine.execute(className, new HashMap<>()).getResult();
             Object validatorTarget = validatorTargetClass.newInstance();
-            Map<String, Object> mapData = ((Map) data);
             Set<ConstraintViolation<Object>> result = new LinkedHashSet<>();
-            if (insert) {
-                mapData.forEach((key, value) -> {
+            if (operation == Operation.INSERT) {
+                data.forEach((key, value) -> {
                     try {
-                        BeanUtils.attr(validatorTarget, key, value);
+                        BeanUtils.setProperty(validatorTarget , (String) key,value );
                     } catch (Exception e) {
                     }
                 });
                 result.addAll(hibernateValidator.validate(validatorTarget));
             } else
-                mapData.forEach((key, value) -> {
-                    Field field = ReflectionUtils.findField(validatorTargetClass, key);
+                data.forEach((key, value) -> {
+                    Field field = ReflectionUtils.findField(validatorTargetClass, (String) key);
                     if (field != null)
-                        result.addAll(hibernateValidator.validateValue(validatorTargetClass, key, value));
+                        result.addAll(hibernateValidator.validateValue(validatorTargetClass, (String) key, value));
                 });
             if (result.size() > 0) {
                 for (ConstraintViolation<Object> violation : result) {
@@ -64,18 +61,24 @@ public class GroovyDycBeanValidator implements Validator {
         } catch (Exception e) {
             throw new BusinessException("验证器异常!", e, 500);
         }
-        if (results.size() > 0) throw new ValidationException(results);
-        return null;
-        //采用异常通知方式
+        if (results.size() > 0) throw new ValidationException(results.get(0).getMessage(), results);
+        return true;
     }
 
     @Override
-    public List insertValid(Object data) {
-        return valid(data, true);
+    public boolean validate(Object data, Operation operation) throws ValidationException {
+        if (data instanceof Map)
+            return validateMap(((Map) data), operation);
+        if (data instanceof Collection) {
+            for (Object o : ((Collection) data)) {
+                validate(o, operation);
+            }
+        } else {
+            BeanMap beanMap = new BeanMap();
+            beanMap.setBean(data);
+            validateMap(beanMap, operation);
+        }
+        return true;
     }
 
-    @Override
-    public List updateValid(Object data) {
-        return valid(data, false);
-    }
 }

+ 13 - 9
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/validator/GroovyDycBeanValidatorFactory.java

@@ -1,12 +1,12 @@
 package org.hsweb.web.service.impl.form.validator;
 
+import org.hsweb.ezorm.meta.FieldMetaData;
+import org.hsweb.ezorm.meta.TableMetaData;
+import org.hsweb.ezorm.meta.expand.Validator;
+import org.hsweb.ezorm.meta.expand.ValidatorFactory;
 import org.hsweb.web.core.exception.BusinessException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.webbuilder.sql.FieldMetaData;
-import org.webbuilder.sql.TableMetaData;
-import org.webbuilder.sql.validator.Validator;
-import org.webbuilder.sql.validator.ValidatorFactory;
 import org.webbuilder.utils.common.StringUtils;
 import org.webbuilder.utils.script.engine.DynamicScriptEngine;
 import org.webbuilder.utils.script.engine.DynamicScriptEngineFactory;
@@ -24,6 +24,7 @@ public class GroovyDycBeanValidatorFactory implements ValidatorFactory {
     private javax.validation.Validator hibernateValidator;
 
     private Map<String, Validator> base = new HashMap<>();
+
     private static final Map<Class, String> simpleType = new HashMap<>();
 
     protected static DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine("groovy");
@@ -48,8 +49,12 @@ public class GroovyDycBeanValidatorFactory implements ValidatorFactory {
     }
 
     @Override
-    public Validator getValidator(TableMetaData metaData) {
-        return base.get(metaData.getName());
+    public Validator createValidator(TableMetaData metaData) {
+        Validator validator = base.get(metaData.getName());
+        if (validator == null) {
+            validator = initValidator(metaData);
+        }
+        return validator;
     }
 
     /**
@@ -58,7 +63,6 @@ public class GroovyDycBeanValidatorFactory implements ValidatorFactory {
      * @param metaData 表结构
      * @return 验证器对象
      */
-    @Override
     public Validator initValidator(TableMetaData metaData) {
         StringBuilder script = new StringBuilder();
         String className = StringUtils.concat(basePackage, ".", metaData.getName());
@@ -71,7 +75,7 @@ public class GroovyDycBeanValidatorFactory implements ValidatorFactory {
         for (FieldMetaData fieldMetaData : metaData.getFields()) {
             String typeName = simpleType.get(fieldMetaData.getJavaType());
             if (typeName == null) typeName = fieldMetaData.getJavaType().getName();
-            if (fieldMetaData.getValidator().isEmpty()) continue;
+            if (fieldMetaData.getValidator()==null|| fieldMetaData.getValidator().isEmpty()) continue;
             for (String ann : fieldMetaData.getValidator()) {
                 hasValidator = true;
                 script.append("\t@").append(ann).append("\n");
@@ -85,7 +89,7 @@ public class GroovyDycBeanValidatorFactory implements ValidatorFactory {
         for (FieldMetaData fieldMetaData : metaData.getFields()) {
             String typeName = simpleType.get(fieldMetaData.getJavaType());
             if (typeName == null) typeName = fieldMetaData.getJavaType().getName();
-            if (fieldMetaData.getValidator().isEmpty()) continue;
+            if (fieldMetaData.getValidator()==null||fieldMetaData.getValidator().isEmpty()) continue;
             script.append("public ")
                     .append(typeName).append(" get")
                     .append(StringUtils.toUpperCaseFirstOne(fieldMetaData.getName()))

+ 0 - 1
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/module/ModuleServiceImpl.java

@@ -3,7 +3,6 @@ package org.hsweb.web.service.impl.module;
 import org.hsweb.web.bean.common.QueryParam;
 import org.hsweb.web.bean.po.module.Module;
 import org.hsweb.web.dao.module.ModuleMapper;
-import org.hsweb.web.core.exception.BusinessException;
 import org.hsweb.web.service.impl.AbstractServiceImpl;
 import org.hsweb.web.service.module.ModuleService;
 import org.springframework.stereotype.Service;

+ 1 - 1
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/system/DataBaseManagerServiceImpl.java

@@ -1,10 +1,10 @@
 package org.hsweb.web.service.impl.system;
 
+import org.hsweb.ezorm.executor.SqlExecutor;
 import org.hsweb.web.bean.common.database.TableField;
 import org.hsweb.web.service.system.DataBaseManagerService;
 import org.hsweb.web.service.system.SqlExecuteProcess;
 import org.springframework.stereotype.Service;
-import org.webbuilder.sql.support.executor.SqlExecutor;
 
 import javax.annotation.Resource;
 import java.util.List;

+ 3 - 3
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/template/TemplateServiceImpl.java

@@ -131,7 +131,7 @@ public class TemplateServiceImpl extends AbstractServiceImpl<Template, String> i
     @Override
     @Transactional(readOnly = true)
     public Template selectLatest(String name) throws Exception {
-        QueryParam param = QueryParam.newInstance()
+        QueryParam param = QueryParam.build()
                 .where("name", name).orderBy("version").desc().doPaging(0, 1);
         List<Template> templates = selectLatestList(param);
         return templates.size() > 0 ? templates.get(0) : null;
@@ -140,7 +140,7 @@ public class TemplateServiceImpl extends AbstractServiceImpl<Template, String> i
     @Override
     @Cacheable(value = CACHE_NAME, key = "'template.name.'+#name+':'+#version")
     public Template selectByVersion(String name, int version) throws Exception {
-        QueryParam param = QueryParam.newInstance().where("name", name).and("version", version);
+        QueryParam param = QueryParam.build().where("name", name).and("version", version);
         return this.selectSingle(param);
     }
 
@@ -157,7 +157,7 @@ public class TemplateServiceImpl extends AbstractServiceImpl<Template, String> i
     @Override
     @Cacheable(value = CACHE_NAME, key = "'template.using.name.'+#name")
     public Template selectUsing(String name) throws Exception {
-        QueryParam param = QueryParam.newInstance().where("name", name).and("using", true);
+        QueryParam param = QueryParam.build().where("name", name).and("using", true);
         return this.selectSingle(param);
     }
 }

+ 14 - 12
hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/form/FormServiceImplTest.java

@@ -1,8 +1,10 @@
 package org.hsweb.web.service.impl.form;
 
+import org.hsweb.ezorm.executor.SqlExecutor;
+import org.hsweb.ezorm.run.Database;
+import org.hsweb.ezorm.run.Table;
 import org.hsweb.web.core.authorize.ExpressionScopeBean;
 import org.hsweb.web.bean.po.form.Form;
-import org.hsweb.web.core.exception.BusinessException;
 import org.hsweb.web.service.form.DynamicFormService;
 import org.hsweb.web.service.form.FormService;
 import org.hsweb.web.service.impl.AbstractTestCase;
@@ -13,15 +15,11 @@ import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.test.annotation.Rollback;
 import org.springframework.transaction.annotation.Transactional;
-import org.webbuilder.sql.DataBase;
-import org.webbuilder.sql.param.insert.InsertParam;
-import org.webbuilder.sql.param.query.QueryParam;
-import org.webbuilder.sql.param.update.UpdateParam;
-import org.webbuilder.sql.support.executor.SqlExecutor;
 import org.webbuilder.utils.file.FileUtils;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -36,7 +34,7 @@ public class FormServiceImplTest extends AbstractTestCase {
     @Resource
     private DynamicFormService dynamicFormService;
     @Resource
-    protected DataBase dataBase;
+    protected Database dataBase;
 
     @Resource
     protected SqlExecutor sqlExecutor;
@@ -98,12 +96,16 @@ public class FormServiceImplTest extends AbstractTestCase {
     @Test
     public void testDeploy() throws Exception {
         formService.deploy(form.getId());
-        dataBase.getTable("test_form").createInsert()
-                .insert(new InsertParam().value("u_id", "test").value("name", "张三"));
-        dataBase.getTable("test_form").createUpdate().update(new UpdateParam().set("u_id", "test2").where("u_id", "test"));
+        dataBase.getTable("test_form").createInsert().value(new HashMap<String, Object>() {{
+            put("u_id", "test");
+            put("name", "张三");
+        }}).exec();
 
-        Map<String, Object> data = dataBase.getTable("test_form")
-                .createQuery().single(new QueryParam().where("name$LIKE", "张三"));
+        dataBase.getTable("test_form").createUpdate().set("u_id", "test2").where("u_id", "test").exec();
+
+        Table<Map<String, Object>> table = dataBase.getTable("test_form");
+
+        Map<String, Object> data = table.createQuery().where("name$LIKE", "张三").single();
 
         Assert.assertEquals("张三", data.get("name"));
         Assert.assertEquals("test2", data.get("u_id"));

+ 24 - 16
hsweb-web-service-impl-common/src/test/java/org/hsweb/web/service/impl/system/DataBaseManagerServiceImplTest.java

@@ -1,28 +1,25 @@
 package org.hsweb.web.service.impl.system;
 
 import com.alibaba.fastjson.JSON;
+import org.hsweb.ezorm.executor.SqlExecutor;
+import org.hsweb.web.bean.common.DeleteParam;
 import org.hsweb.web.bean.common.InsertParam;
 import org.hsweb.web.bean.common.QueryParam;
-import org.hsweb.web.bean.common.Term;
 import org.hsweb.web.bean.common.UpdateParam;
-import org.hsweb.web.bean.po.module.Module;
 import org.hsweb.web.bean.po.role.RoleModule;
 import org.hsweb.web.bean.po.user.User;
-import org.hsweb.web.dao.role.RoleMapper;
 import org.hsweb.web.dao.role.RoleModuleMapper;
 import org.hsweb.web.dao.user.UserMapper;
 import org.hsweb.web.service.impl.AbstractTestCase;
 import org.hsweb.web.service.module.ModuleMetaService;
-import org.hsweb.web.service.module.ModuleService;
 import org.hsweb.web.service.system.DataBaseManagerService;
 import org.junit.Test;
-import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
-import org.webbuilder.sql.support.common.CommonSql;
-import org.webbuilder.sql.support.executor.HashMapWrapper;
-import org.webbuilder.sql.support.executor.SqlExecutor;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 
 /**
  * Created by zhouhao on 16-4-21.
@@ -46,29 +43,40 @@ public class DataBaseManagerServiceImplTest extends AbstractTestCase {
     @Test
     public void test() throws Exception {
         QueryParam queryParam = new QueryParam();
-          queryParam.select("username", "password")
+        queryParam.select("username", "password")
                 .where("createDate$GT", "2015-12-10");
 
         userMapper.select(queryParam);
-//        User user = userMapper.selectByPk("admin");
-//        user.setId("aaaa");
-       // userMapper.insert(new InsertParam<>(user));
-       // userMapper.update(new UpdateParam<>(user).includes("username"));
+        userMapper.delete(new DeleteParam().where("id", "1"));
+        User user = userMapper.selectByPk("admin");
+        user.setId("aaaa");
+        List<User> users = new ArrayList<>();
+        for (int i = 0; i < 10; i++) {
+            User user2 = new User();
+            user2.setUsername("aaaa");
+            user2.setPassword("aaaa");
+            user2.setCreateDate(new Date());
+            user2.setId("bbb" + i);
+            users.add(user2);
+        }
+        userMapper.insert((InsertParam) new InsertParam<>(users));
+        // userMapper.update(new UpdateParam<>(user).includes("username"));
     }
 
     @Test
     public void testGetFieldList() throws Exception {
         RoleModule roleModule = new RoleModule();
         roleModule.setId("aaa");
-        roleModule.setActions(Arrays.asList("A","B"));
+        roleModule.setActions(Arrays.asList("A", "B"));
         roleModule.setModuleId("aaa");
         roleModuleMapper.insert(new InsertParam<>(roleModule));
         roleModuleMapper.update(new UpdateParam<>(roleModule).includes("actions"));
-        System.out.println(JSON.toJSONString(roleModuleMapper.select(new QueryParam())));;
+        System.out.println(JSON.toJSONString(roleModuleMapper.select(new QueryParam())));
     }
 
     @Test
     public void testExecuteSQL() throws Exception {
 
     }
+
 }

+ 1 - 1
hsweb-web-service-interface/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>hsweb-web-service-interface</artifactId>

+ 3 - 2
hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/DynamicFormService.java

@@ -1,5 +1,6 @@
 package org.hsweb.web.service.form;
 
+import org.hsweb.ezorm.meta.TableMetaData;
 import org.hsweb.web.bean.common.*;
 import org.hsweb.web.bean.po.form.Form;
 
@@ -13,7 +14,7 @@ import java.util.Map;
  */
 public interface DynamicFormService {
 
-    Object parseMeta(Form form) throws Exception;
+    TableMetaData parseMeta(Form form) throws Exception;
 
     void deploy(Form form) throws Exception;
 
@@ -25,7 +26,7 @@ public interface DynamicFormService {
 
     int total(String name, QueryParam param) throws Exception;
 
-    String insert(String name, InsertParam<Map<String, Object>> data) throws Exception;
+    String insert(String name,Map<String, Object> data) throws Exception;
 
     String saveOrUpdate(String name, Map<String, Object> map) throws Exception;
 

+ 19 - 0
hsweb-web-service-interface/src/main/java/org/hsweb/web/service/form/FormParser.java

@@ -0,0 +1,19 @@
+package org.hsweb.web.service.form;
+
+import org.hsweb.ezorm.meta.TableMetaData;
+import org.hsweb.web.bean.po.form.Form;
+
+import javax.xml.bind.Marshaller;
+
+/**
+ * Created by zhouhao on 16-4-20.
+ */
+public interface FormParser {
+    TableMetaData parse(Form form);
+
+    String parseHtml(Form form);
+
+    interface Listener {
+        void afterParse(TableMetaData tableMetaData);
+    }
+}

+ 1 - 1
hsweb-web-websocket/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 6
hsweb-web-workflow/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>hsweb-framework</artifactId>
         <groupId>org.hsweb</groupId>
-        <version>1.0-SNAPSHOT</version>
+        <version>1.0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -48,11 +48,6 @@
             <artifactId>wb-utils</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.webbuilder</groupId>
-            <artifactId>wb-sql-util</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>org.apache.xmlgraphics</groupId>
             <artifactId>batik-parser</artifactId>

+ 4 - 4
hsweb-web-workflow/src/main/java/org/hsweb/web/workflow/controller/model/ActivityModelController.java

@@ -16,9 +16,11 @@ import org.apache.batik.transcoder.TranscoderInput;
 import org.apache.batik.transcoder.TranscoderOutput;
 import org.apache.batik.transcoder.image.PNGTranscoder;
 import org.apache.commons.lang3.StringUtils;
+import org.hsweb.ezorm.meta.expand.PropertyWrapper;
+import org.hsweb.ezorm.meta.expand.SimplePropertyWrapper;
+import org.hsweb.ezorm.param.TermType;
 import org.hsweb.web.bean.common.PagerResult;
 import org.hsweb.web.bean.common.QueryParam;
-import org.hsweb.web.bean.common.TermType;
 import org.hsweb.web.core.authorize.annotation.Authorize;
 import org.hsweb.web.core.exception.NotFoundException;
 import org.hsweb.web.core.logger.annotation.AccessLogger;
@@ -27,8 +29,6 @@ import org.hsweb.web.workflow.controller.BasicController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
-import org.webbuilder.sql.SimpleValueWrapper;
-import org.webbuilder.sql.ValueWrapper;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -55,7 +55,7 @@ public class ActivityModelController extends BasicController {
         ModelQuery modelQuery = repositoryService.createModelQuery();
         param.getTerms().forEach((term) -> {
 
-            ValueWrapper valueWrapper = new SimpleValueWrapper(term.getValue());
+            PropertyWrapper valueWrapper = new SimplePropertyWrapper(term.getValue());
             String stringValue = valueWrapper.toString();
             switch (term.getField()) {
                 case "name":

+ 25 - 19
pom.xml

@@ -6,7 +6,7 @@
     <groupId>org.hsweb</groupId>
     <artifactId>hsweb-framework</artifactId>
     <packaging>pom</packaging>
-    <version>1.0-SNAPSHOT</version>
+    <version>1.0.1-SNAPSHOT</version>
     <modules>
         <module>hsweb-web-dao-interface</module>
         <module>hsweb-web-dao-impl-mybatis</module>
@@ -40,6 +40,7 @@
         <cglib.version>3.2.2</cglib.version>
         <aspectj.version>1.6.12</aspectj.version>
         <hibernate.validator.version>5.1.1.Final</hibernate.validator.version>
+        <hsweb.ezorm.version>1.0-SNAPSHOT</hsweb.ezorm.version>
         <webbuilder.version>1.0-SNAPSHOT</webbuilder.version>
     </properties>
 
@@ -111,25 +112,31 @@
     <dependencyManagement>
         <dependencies>
             <dependency>
-                <groupId>org.webbuilder</groupId>
-                <artifactId>wb-sql-util</artifactId>
-                <version>${webbuilder.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>org.slf4j</groupId>
-                        <artifactId>slf4j-api</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>org.slf4j</groupId>
-                        <artifactId>slf4j-log4j12</artifactId>
-                    </exclusion>
-                    <exclusion>
-                        <groupId>ch.qos.logback</groupId>
-                        <artifactId>logback-classic</artifactId>
-                    </exclusion>
-                </exclusions>
+                <groupId>org.hsweb</groupId>
+                <artifactId>hsweb-easy-orm</artifactId>
+                <version>${hsweb.ezorm.version}</version>
             </dependency>
 
+            <!--<dependency>-->
+                <!--<groupId>org.webbuilder</groupId>-->
+                <!--<artifactId>wb-sql-util</artifactId>-->
+                <!--<version>${webbuilder.version}</version>-->
+                <!--<exclusions>-->
+                    <!--<exclusion>-->
+                        <!--<groupId>org.slf4j</groupId>-->
+                        <!--<artifactId>slf4j-api</artifactId>-->
+                    <!--</exclusion>-->
+                    <!--<exclusion>-->
+                        <!--<groupId>org.slf4j</groupId>-->
+                        <!--<artifactId>slf4j-log4j12</artifactId>-->
+                    <!--</exclusion>-->
+                    <!--<exclusion>-->
+                        <!--<groupId>ch.qos.logback</groupId>-->
+                        <!--<artifactId>logback-classic</artifactId>-->
+                    <!--</exclusion>-->
+                <!--</exclusions>-->
+            <!--</dependency>-->
+
             <dependency>
                 <groupId>org.webbuilder</groupId>
                 <artifactId>wb-utils</artifactId>
@@ -299,7 +306,6 @@
             </dependency>
 
         </dependencies>
-
     </dependencyManagement>
     <repositories>
         <repository>