Browse Source

修复非String类型的主键错误问题

zhouhao 8 years ago
parent
commit
0a26dec733

+ 5 - 1
hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/commons/CRUService.java

@@ -1,5 +1,6 @@
 package org.hsweb.web.service.commons;
 
+import org.hsweb.web.bean.po.GenericPo;
 import org.hsweb.web.dao.CRUMapper;
 import org.hsweb.web.dao.InsertMapper;
 import org.hsweb.web.dao.QueryMapper;
@@ -8,7 +9,10 @@ import org.hsweb.web.dao.UpdateMapper;
 /**
  * @author zhouhao
  */
-public interface CRUService<Po, Pk> extends SimpleInsertService<Po, Pk>, SimpleQueryService<Po, Pk>, SimpleUpdateService<Po> {
+public interface CRUService<Po extends GenericPo<Pk>, Pk> extends
+        SimpleInsertService<Po, Pk>,
+        SimpleQueryService<Po, Pk>,
+        SimpleUpdateService<Po,Pk> {
     CRUMapper<Po, Pk> getCRUMapper();
 
     @Override

+ 0 - 9
hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/commons/GenericPoInsertService.java

@@ -1,9 +0,0 @@
-package org.hsweb.web.service.commons;
-
-import org.hsweb.web.bean.po.GenericPo;
-
-/**
- * @author zhouhao
- */
-public interface GenericPoInsertService extends SimpleInsertService<GenericPo<String>, String> {
-}

+ 0 - 9
hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/commons/GenericPoUpdateService.java

@@ -1,9 +0,0 @@
-package org.hsweb.web.service.commons;
-
-import org.hsweb.web.bean.po.GenericPo;
-
-/**
- * @author zhouhao
- */
-public interface GenericPoUpdateService extends SimpleUpdateService<GenericPo<String>> {
-}

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

@@ -14,7 +14,7 @@ public interface SimpleDeleteService<Pk> extends DeleteService<Pk> {
     DeleteMapper getDeleteMapper();
 
     default int delete(Pk pk) {
-        return getDeleteMapper().delete(DeleteParam.build().where(GenericPo.Property.id, pk));
+        return createDelete().where(GenericPo.Property.id, pk).exec();
     }
 
     /**

+ 6 - 7
hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/commons/SimpleInsertService.java

@@ -8,22 +8,21 @@ import org.hsweb.web.service.InsertService;
 /**
  * @author zhouhao
  */
-public interface SimpleInsertService<Po, Pk> extends InsertService<Po, Pk> {
+public interface SimpleInsertService<Po extends GenericPo<Pk>, Pk> extends InsertService<Po, Pk> {
 
     InsertMapper<Po> getInsertMapper();
 
     void tryValidPo(Po data);
 
+    Class<Pk> getPKType();
+
     @Override
     default Pk insert(Po data) {
-        Pk primaryKey = null;
-        if (data instanceof GenericPo) {
-            if (((GenericPo) data).getId() == null)
-                ((GenericPo) data).setId(GenericPo.createUID());
-            primaryKey = (Pk) ((GenericPo) data).getId();
+        if (getPKType() == String.class && data.getId() == null) {
+            ((GenericPo<String>) data).setId(GenericPo.createUID());
         }
         tryValidPo(data);
         getInsertMapper().insert(InsertParam.build(data));
-        return primaryKey;
+        return data.getId();
     }
 }

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

@@ -13,7 +13,7 @@ import java.util.List;
 /**
  * @author zhouhao
  */
-public interface SimpleUpdateService<Po> extends UpdateService<Po> {
+public interface SimpleUpdateService<Po extends GenericPo<Pk>, Pk> extends UpdateService<Po> {
 
     UpdateMapper<Po> getUpdateMapper();
 
@@ -36,8 +36,8 @@ public interface SimpleUpdateService<Po> extends UpdateService<Po> {
 
     @Override
     default int saveOrUpdate(Po po) {
-        if (po instanceof GenericPo && this instanceof QueryService) {
-            Po old = (Po) ((QueryService) this).selectByPk(((GenericPo) po).getId());
+        if (this instanceof QueryService) {
+            Po old = ((QueryService<Po, Pk>) this).selectByPk(po.getId());
             if (old != null)
                 return update(po);
             else {

+ 11 - 2
hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/impl/AbstractServiceImpl.java

@@ -1,5 +1,7 @@
 package org.hsweb.web.service.impl;
 
+import org.hsweb.commons.ClassUtils;
+import org.hsweb.web.bean.po.GenericPo;
 import org.hsweb.web.bean.validator.ValidateResults;
 import org.hsweb.web.core.exception.NotFoundException;
 import org.hsweb.web.core.exception.ValidationException;
@@ -12,6 +14,7 @@ import org.hsweb.web.service.commons.SimpleUpdateService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ResolvableType;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.validation.ConstraintViolation;
@@ -28,9 +31,9 @@ import java.util.Set;
  * @since 1.0
  */
 @Transactional(rollbackFor = Throwable.class)
-public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po, PK>
+public abstract class AbstractServiceImpl<Po extends GenericPo<PK>, PK> implements GenericService<Po, PK>
         , SimpleQueryService<Po, PK>
-        , SimpleUpdateService<Po>
+        , SimpleUpdateService<Po, PK>
         , SimpleDeleteService<PK>
         , SimpleInsertService<Po, PK> {
     protected Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -40,6 +43,11 @@ public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po,
 
     protected abstract GenericMapper<Po, PK> getMapper();
 
+    @Override
+    public Class<PK> getPKType() {
+        return (Class<PK>) ClassUtils.getGenericType(this.getClass(), 1);
+    }
+
     @Override
     public QueryMapper<Po, PK> getQueryMapper() {
         return getMapper();
@@ -80,4 +88,5 @@ public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po,
         assertNotNull(po, "数据不存在");
     }
 
+
 }