zhouhao vor 8 Jahren
Ursprung
Commit
043b7dea8a
25 geänderte Dateien mit 113 neuen und 114 gelöschten Zeilen
  1. 0 12
      hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/GenericEntityController.java
  2. 0 48
      hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/GenericEntityUpdateController.java
  3. 7 1
      hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/QueryController.java
  4. 7 1
      hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/UpdateController.java
  5. 15 7
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/CrudDao.java
  6. 2 1
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/Dao.java
  7. 9 2
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/DeleteDao.java
  8. 3 3
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/InsertDao.java
  9. 2 2
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/dynamic/DeleteByBeanDao.java
  10. 2 2
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/dynamic/QueryByEntityDao.java
  11. 2 1
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/dynamic/UpdateByEntityDao.java
  12. 1 0
      hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/builder/EasyOrmSqlBuilder.java
  13. 4 0
      hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/RecordCreationEntity.java
  14. 15 7
      hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/SimpleTreeSortSupportEntity.java
  15. 2 2
      hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/SortSupportEntity.java
  16. 11 0
      hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/TreeSupportEntity.java
  17. 1 1
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/src/main/java/org/hswebframework/web/service/CrudService.java
  18. 5 5
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/src/main/java/org/hswebframework/web/service/UpdateService.java
  19. 0 2
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/AbstractTreeSortService.java
  20. 3 3
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultDSLDeleteService.java
  21. 3 4
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultDSLQueryService.java
  22. 4 4
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultDSLUpdateService.java
  23. 2 2
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultQueryByEntityService.java
  24. 12 3
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericEntityService.java
  25. 1 1
      hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericService.java

+ 0 - 12
hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/GenericEntityController.java

@@ -20,12 +20,7 @@ package org.hswebframework.web.controller;
 
 import org.hswebframework.web.commons.entity.Entity;
 import org.hswebframework.web.commons.entity.GenericEntity;
-import org.hswebframework.web.controller.message.ResponseMessage;
 import org.hswebframework.web.service.CrudService;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import static org.hswebframework.web.controller.message.ResponseMessage.ok;
 
 /**
  * 通用实体的增删改查控制器
@@ -39,11 +34,4 @@ public interface GenericEntityController<E extends GenericEntity<PK>, PK, Q exte
         extends CrudController<E, PK, Q> {
 
     CrudService<E, PK> getService();
-
-    @Override
-    default ResponseMessage updateByPrimaryKey(@PathVariable PK id, @RequestBody E data) {
-        // 设置id属性
-        data.setId(id);
-        return ok(getService().updateByPk(data));
-    }
 }

+ 0 - 48
hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/GenericEntityUpdateController.java

@@ -1,48 +0,0 @@
-/*
- * Copyright 2016 http://www.hswebframework.org
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-package org.hswebframework.web.controller;
-
-import org.hswebframework.web.authorization.Permission;
-import org.hswebframework.web.authorization.annotation.Authorize;
-import org.hswebframework.web.commons.entity.GenericEntity;
-import org.hswebframework.web.controller.message.ResponseMessage;
-import org.hswebframework.web.logging.AccessLogger;
-import org.hswebframework.web.service.UpdateService;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-
-/**
- * 通用实体更新控制器
- *
- * @author zhouhao
- * @see UpdateService
- * @since 3.0
- */
-public interface GenericEntityUpdateController<E extends GenericEntity<PK>, PK> extends UpdateController<E, PK> {
-
-    UpdateService<E> getService();
-
-    @Authorize(action = Permission.ACTION_UPDATE)
-    @PutMapping(path = "/{id}")
-    @AccessLogger("{update_by_primary_key}")
-    default ResponseMessage updateByPrimaryKey(@PathVariable PK id, @RequestBody E data) {
-        data.setId(id);
-        return ResponseMessage.ok(getService().updateByPk(data));
-    }
-}

+ 7 - 1
hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/QueryController.java

@@ -17,6 +17,7 @@
 
 package org.hswebframework.web.controller;
 
+import org.hswebframework.web.NotFoundException;
 import org.hswebframework.web.authorization.Permission;
 import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.commons.entity.Entity;
@@ -71,7 +72,12 @@ public interface QueryController<E, PK, Q extends Entity> {
     @GetMapping(path = "/{id}")
     @AccessLogger("{get_by_id}")
     default ResponseMessage getByPrimaryKey(@PathVariable PK id) {
-        return ok(getService().selectByPk(id));
+        return ok(assertNotNull(getService().selectByPk(id)));
+    }
+
+    static Object assertNotNull(Object obj) {
+        if (null == obj) throw new NotFoundException("{data_not_exist}");
+        return obj;
     }
 
 }

+ 7 - 1
hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/UpdateController.java

@@ -17,10 +17,12 @@
 
 package org.hswebframework.web.controller;
 
+
 import org.hswebframework.web.authorization.Permission;
 import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.controller.message.ResponseMessage;
 import org.hswebframework.web.logging.AccessLogger;
+import org.hswebframework.web.service.UpdateService;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -31,8 +33,12 @@ import org.springframework.web.bind.annotation.RequestBody;
  * @author zhouhao
  */
 public interface UpdateController<E, PK> {
+    UpdateService<E, PK> getService();
+
     @Authorize(action = Permission.ACTION_UPDATE)
     @PutMapping(path = "/{id}")
     @AccessLogger("{update_by_primary_key}")
-    ResponseMessage updateByPrimaryKey(@PathVariable PK id, @RequestBody E data);
+    default ResponseMessage updateByPrimaryKey(@PathVariable PK id, @RequestBody E data) {
+        return ResponseMessage.ok(getService().updateByPk(id, data));
+    }
 }

+ 15 - 7
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/CrudDao.java

@@ -19,18 +19,26 @@
 package org.hswebframework.web.dao;
 
 import org.hswebframework.web.dao.dynamic.UpdateByEntityDao;
-import org.hswebframework.web.dao.dynamic.DeleteByBeanDao;
-import org.hswebframework.web.dao.dynamic.QueryByBeanDao;
+import org.hswebframework.web.dao.dynamic.DeleteByEntityDao;
+import org.hswebframework.web.dao.dynamic.QueryByEntityDao;
 
 /**
- * TODO 完成注释
+ * 通用增删改查DAO接口,定义了增删改查.以及动态条件查询,修改,删除。
  *
+ * @param <E> PO类型
+ * @param <PK> 主键类型
  * @author zhouhao
+ * @see InsertDao
+ * @see DeleteDao
+ * @see DeleteByEntityDao
+ * @see UpdateByEntityDao
+ * @see QueryByEntityDao
+ * @since 3.0
  */
-public interface CrudDao<PO, PK> extends
-        InsertDao<PO>,
+public interface CrudDao<E, PK> extends
+        InsertDao<E>,
         DeleteDao<PK>,
-        DeleteByBeanDao,
+        DeleteByEntityDao,
         UpdateByEntityDao,
-        QueryByBeanDao<PO> {
+        QueryByEntityDao<E> {
 }

+ 2 - 1
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/Dao.java

@@ -19,9 +19,10 @@
 package org.hswebframework.web.dao;
 
 /**
- * TODO 完成注释
+ * Dao的总接口,用于标识类为Dao
  *
  * @author zhouhao
+ * @since 3.0
  */
 public interface Dao {
 }

+ 9 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/DeleteDao.java

@@ -19,11 +19,18 @@
 package org.hswebframework.web.dao;
 
 /**
- * TODO 完成注释
+ * 通用删除dao
  *
+ * @param <PK> 主键类型
  * @author zhouhao
  * @since 3.0
  */
-public interface DeleteDao<PK> extends Dao{
+public interface DeleteDao<PK> extends Dao {
+    /**
+     * 根据主键删除数据,并返回被删除数据的数量
+     *
+     * @param pk 主键
+     * @return 删除的数据数量, 理论上此返回值应该为0或者1.
+     */
     int deleteByPk(PK pk);
 }

+ 3 - 3
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/InsertDao.java

@@ -19,11 +19,11 @@
 package org.hswebframework.web.dao;
 
 /**
- * TODO  完成注释
+ * 通用数据插入DAO接口
  *
  * @author zhouhao
  * @since 3.0
  */
-public interface InsertDao<PO> extends Dao {
-    void insert(PO po);
+public interface InsertDao<E> extends Dao {
+    void insert(E e);
 }

+ 2 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/dynamic/DeleteByBeanDao.java

@@ -21,11 +21,11 @@ package org.hswebframework.web.dao.dynamic;
 import org.hswebframework.web.commons.entity.Entity;
 
 /**
- * TODO  完成注释
+ * 根据实体类条件进行删除,删除条件根据实体类进行解析。解析方式和{@link QueryByEntityDao#query}一致
  *
  * @author zhouhao
  * @since 3.0
  */
-public interface DeleteByBeanDao {
+public interface DeleteByEntityDao {
     int delete(Entity entity);
 }

+ 2 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/dynamic/QueryByEntityDao.java

@@ -23,8 +23,8 @@ import org.hswebframework.web.commons.entity.Entity;
 import java.util.List;
 
 /**
- * TODO  完成注释
- *
+ * 根据实体类动态查询,可传入特定的实体类进行查询。
+ * 目前支持{@link org.hswebframework.web.commons.entity.param.QueryParamEntity} 动态查询
  * @author zhouhao
  * @since 3.0
  */

+ 2 - 1
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-api/src/main/java/org/hswebframework/web/dao/dynamic/UpdateByEntityDao.java

@@ -21,7 +21,8 @@ package org.hswebframework.web.dao.dynamic;
 import org.hswebframework.web.commons.entity.Entity;
 
 /**
- * TODO  完成注释
+ * 根据实体类进行更新,实体类支持动态条件或者普通实体类。
+ * 动态条件和{@link QueryByEntityDao#query(Entity)} 一致。
  *
  * @author zhouhao
  * @since 3.0

+ 1 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/builder/EasyOrmSqlBuilder.java

@@ -179,6 +179,7 @@ public class EasyOrmSqlBuilder {
                     "}");
         });
         if (!appender.isEmpty()) appender.removeFirst();
+        else throw new UnsupportedOperationException("{no_columns_will_be_update}");
         return appender.toString();
     }
 

+ 4 - 0
hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/RecordCreationEntity.java

@@ -8,6 +8,10 @@ package org.hswebframework.web.commons.entity;
  * @since 3.0
  */
 public interface RecordCreationEntity extends Entity {
+
+    String creatorId  = "creatorId";
+    String createTime = "createTime";
+
     String getCreatorId();
 
     void setCreatorId(String creatorId);

+ 15 - 7
hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/SimpleTreeSortSupportEntity.java

@@ -18,7 +18,6 @@
 
 package org.hswebframework.web.commons.entity;
 
-import org.hswebframework.web.Describe;
 
 /**
  * 支持树形结构,排序的实体类,要使用树形结构,排序功能的实体类直接继承该类
@@ -28,21 +27,20 @@ public abstract class SimpleTreeSortSupportEntity<PK> extends SimpleGenericEntit
     /**
      * 父级类别
      */
-    @Describe("父级类别ID")
     private PK parentId;
 
     /**
      * 树结构编码,用于快速查找, 每一层由4位字符组成,用-分割
      * 如第一层:0001 第二层:0001-0001 第三层:0001-0001-0001
      */
-    @Describe("树识别码")
     private String treeCode;
 
     /**
      * 排序索引
      */
-    @Describe("排序索引")
-    private long sortIndex;
+    private Long sortIndex;
+
+    private Integer level;
 
     @Override
     public String getTreeCode() {
@@ -65,12 +63,22 @@ public abstract class SimpleTreeSortSupportEntity<PK> extends SimpleGenericEntit
     }
 
     @Override
-    public long getSortIndex() {
+    public Long getSortIndex() {
         return sortIndex;
     }
 
     @Override
-    public void setSortIndex(long sortIndex) {
+    public Integer getLevel() {
+        return level;
+    }
+
+    @Override
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    @Override
+    public void setSortIndex(Long sortIndex) {
         this.sortIndex = sortIndex;
     }
 

+ 2 - 2
hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/SortSupportEntity.java

@@ -20,9 +20,9 @@ package org.hswebframework.web.commons.entity;
 
 public interface SortSupportEntity extends Comparable<SortSupportEntity>, Entity {
 
-    long getSortIndex();
+    Long getSortIndex();
 
-    void setSortIndex(long sortIndex);
+    void setSortIndex(Long sortIndex);
 
     default int compareTo(SortSupportEntity support) {
         if (support == null) return -1;

+ 11 - 0
hsweb-commons/hsweb-commons-entity/src/main/java/org/hswebframework/web/commons/entity/TreeSupportEntity.java

@@ -46,6 +46,15 @@ public interface TreeSupportEntity<PK> extends GenericEntity<PK> {
 
     void setParentId(PK parentId);
 
+    Integer getLevel();
+
+    void setLevel(Integer level);
+
+    default void setLevelFromTreeCode() {
+        if (getTreeCode() != null)
+            setLevel(getTreeCode().split("-").length);
+    }
+
     <T extends TreeSupportEntity<PK>> List<T> getChildren();
 
     /**
@@ -74,6 +83,7 @@ public interface TreeSupportEntity<PK> extends GenericEntity<PK> {
         List<T> children = parent.getChildren();
         if (parent.getTreeCode() == null) {
             parent.setTreeCode(RandomUtil.randomChar(4));
+            parent.setLevelFromTreeCode();
         }
         if (children != null) {
             PK pid = parent.getId();
@@ -88,6 +98,7 @@ public interface TreeSupportEntity<PK> extends GenericEntity<PK> {
                 }
                 child.setParentId(pid);
                 child.setTreeCode(parent.getTreeCode() + "-" + RandomUtil.randomChar(4));
+                child.setLevelFromTreeCode();
                 target.add(child);
                 expandTree2List(child, target, idGenerator);
             }

+ 1 - 1
hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/src/main/java/org/hswebframework/web/service/CrudService.java

@@ -26,7 +26,7 @@ package org.hswebframework.web.service;
  */
 public interface CrudService<E, PK> extends
         QueryByEntityService<E>,
-        UpdateService<E>,
+        UpdateService<E,PK>,
         InsertService<E, PK>,
         DeleteService<PK>,
         CreateEntityService<E>,

+ 5 - 5
hsweb-commons/hsweb-commons-service/hsweb-commons-service-api/src/main/java/org/hswebframework/web/service/UpdateService.java

@@ -20,14 +20,14 @@ package org.hswebframework.web.service;
 
 import java.util.List;
 
-public interface UpdateService<Po> extends Service {
+public interface UpdateService<E, PK> extends Service {
     /**
      * 修改记录信息
      *
      * @param data 要修改的对象
      * @return 影响记录数
      */
-    int updateByPk(Po data);
+    int updateByPk(PK id, E data);
 
     /**
      * 批量修改记录
@@ -35,15 +35,15 @@ public interface UpdateService<Po> extends Service {
      * @param data 要修改的记录集合
      * @return 影响记录数
      */
-    int updateByPk(List<Po> data);
+    int updateByPk(List<E> data);
 
     /**
      * 保存或修改
      *
-     * @param po 要修改的数据
+     * @param e 要修改的数据
      * @return 影响记录数
      */
-    int saveOrUpdate(Po po);
+    int saveOrUpdate(E e);
 
 
 }

+ 0 - 2
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/AbstractTreeSortService.java

@@ -35,8 +35,6 @@ import java.util.List;
 public abstract class AbstractTreeSortService<E extends TreeSortSupportEntity<PK>, PK>
         extends GenericEntityService<E, PK> implements TreeService<E, PK> {
 
-    protected abstract IDGenerator<PK> getIDGenerator();
-
     @Override
     @Transactional(readOnly = true)
     public List<E> selectAllChildNode(PK parentId) {

+ 3 - 3
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultDSLDeleteService.java

@@ -20,13 +20,13 @@ package org.hswebframework.web.service;
 
 import org.hsweb.ezorm.core.dsl.Delete;
 import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
-import org.hswebframework.web.dao.dynamic.DeleteByBeanDao;
+import org.hswebframework.web.dao.dynamic.DeleteByEntityDao;
 
 /**
  * @author zhouhao
  */
 public interface DefaultDSLDeleteService<PK> extends DefaultDeleteService<PK> {
-    DeleteByBeanDao getDao();
+    DeleteByEntityDao getDao();
 
     default Delete<DeleteParamEntity> createDelete() {
         Delete<DeleteParamEntity> delete = new Delete<>(new DeleteParamEntity());
@@ -34,7 +34,7 @@ public interface DefaultDSLDeleteService<PK> extends DefaultDeleteService<PK> {
         return delete;
     }
 
-    static Delete<DeleteParamEntity> createDelete(DeleteByBeanDao deleteDao) {
+    static Delete<DeleteParamEntity> createDelete(DeleteByEntityDao deleteDao) {
         Delete<DeleteParamEntity> update = new Delete<>(new DeleteParamEntity());
         update.setExecutor(deleteDao::delete);
         return update;

+ 3 - 4
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultDSLQueryService.java

@@ -19,9 +19,8 @@
 package org.hswebframework.web.service;
 
 import org.hsweb.ezorm.core.dsl.Query;
-import org.hswebframework.web.commons.entity.Entity;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
-import org.hswebframework.web.dao.dynamic.QueryByBeanDao;
+import org.hswebframework.web.dao.dynamic.QueryByEntityDao;
 
 import java.util.List;
 
@@ -60,7 +59,7 @@ public interface DefaultDSLQueryService<E, PK>
     }
 
     /**
-     * 指定一个dao映射接口,接口需继承{@link QueryByBeanDao}创建dsl数据查询对象<br>
+     * 指定一个dao映射接口,接口需继承{@link QueryByEntityDao}创建dsl数据查询对象<br>
      * 可通过返回的Query对象进行dsl方式操作如:<br>
      * <code>
      * createQuery(userMapper).where("id",1).single();
@@ -73,7 +72,7 @@ public interface DefaultDSLQueryService<E, PK>
      * @see org.hsweb.ezorm.core.Conditional
      * @since 3.0
      */
-    static <PO> Query<PO, QueryParamEntity> createQuery(QueryByBeanDao<PO> dao) {
+    static <PO> Query<PO, QueryParamEntity> createQuery(QueryByEntityDao<PO> dao) {
         Query<PO, QueryParamEntity> query = new Query<>(new QueryParamEntity());
         query.setListExecutor(dao::query);
         query.setTotalExecutor(dao::count);

+ 4 - 4
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultDSLUpdateService.java

@@ -27,19 +27,19 @@ import org.hswebframework.web.commons.entity.param.UpdateParamEntity;
  *
  * @author zhouhao
  */
-public interface DefaultDSLUpdateService<PO> extends UpdateService<PO> {
+public interface DefaultDSLUpdateService<E,PK> extends UpdateService<E,PK> {
 
     UpdateByEntityDao getDao();
 
-    default Update<PO, UpdateParamEntity<PO>> createUpdate(PO data) {
+    default Update<E, UpdateParamEntity<E>> createUpdate(E data) {
         return Update.build(getDao()::update, new UpdateParamEntity<>(data));
     }
 
-    static <PO> Update<PO, UpdateParamEntity<PO>> createUpdate(UpdateByEntityDao dao) {
+    static <E> Update<E, UpdateParamEntity<E>> createUpdate(UpdateByEntityDao dao) {
         return Update.build(dao::update, new UpdateParamEntity<>());
     }
 
-    static <PO> Update<PO, UpdateParamEntity<PO>> createUpdate(UpdateByEntityDao dao, PO data) {
+    static <E> Update<E, UpdateParamEntity<E>> createUpdate(UpdateByEntityDao dao, E data) {
         return Update.build(dao::update, new UpdateParamEntity<>(data));
     }
 }

+ 2 - 2
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/DefaultQueryByEntityService.java

@@ -22,7 +22,7 @@ import org.hsweb.ezorm.core.dsl.Query;
 import org.hswebframework.web.commons.entity.Entity;
 import org.hswebframework.web.commons.entity.PagerResult;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
-import org.hswebframework.web.dao.dynamic.QueryByBeanDao;
+import org.hswebframework.web.dao.dynamic.QueryByEntityDao;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collections;
@@ -31,7 +31,7 @@ import java.util.List;
 public interface DefaultQueryByEntityService<E>
         extends QueryByEntityService<E> {
 
-    QueryByBeanDao<E> getDao();
+    QueryByEntityDao<E> getDao();
 
     /**
      * 分页进行查询数据,查询条件同 {@link DefaultQueryByEntityService#select}

+ 12 - 3
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericEntityService.java

@@ -21,6 +21,7 @@ package org.hswebframework.web.service;
 import org.hswebframework.web.commons.entity.GenericEntity;
 import org.hswebframework.web.commons.entity.RecordCreationEntity;
 import org.hswebframework.web.dao.CrudDao;
+import org.hswebframework.web.id.IDGenerator;
 import org.hswebframwork.utils.ClassUtils;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -41,6 +42,8 @@ public abstract class GenericEntityService<E extends GenericEntity<PK>, PK>
         super();
     }
 
+    protected abstract IDGenerator<PK> getIDGenerator();
+
     @Override
     public abstract CrudDao<E, PK> getDao();
 
@@ -52,16 +55,21 @@ public abstract class GenericEntityService<E extends GenericEntity<PK>, PK>
     }
 
     @Override
-    public int updateByPk(E entity) {
+    public int updateByPk(PK pk, E entity) {
+        entity.setId(pk);
         tryValidate(entity);
         return createUpdate(entity)
                 //如果是RecordCreationEntity则不修改creator_id和creator_time
                 .when(ClassUtils.instanceOf(getEntityType(), RecordCreationEntity.class),
-                        update -> update.and().excludes("creator_id", "creator_time"))
-                .where(GenericEntity.id, entity.getId())
+                        update -> update.and().excludes(RecordCreationEntity.creatorId, RecordCreationEntity.createTime))
+                .where(GenericEntity.id, pk)
                 .exec();
     }
 
+    protected int updateByPk(E entity) {
+        return updateByPk(entity.getId(), entity);
+    }
+
     @Override
     public int updateByPk(List<E> data) {
         return data.stream()
@@ -82,6 +90,7 @@ public abstract class GenericEntityService<E extends GenericEntity<PK>, PK>
 
     @Override
     public PK insert(E entity) {
+        if (entity.getId() == null) entity.setId(getIDGenerator().generate());
         tryValidate(entity);
         getDao().insert(entity);
         return entity.getId();

+ 1 - 1
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericService.java

@@ -33,7 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
  */
 public interface GenericService<E, PK> extends
         DefaultDSLQueryService<E, PK>,
-        DefaultDSLUpdateService<E>,
+        DefaultDSLUpdateService<E,PK>,
         DefaultDSLDeleteService<PK>,
         CrudService<E, PK> {
     @Override