Skip to content

Commit 0a26dec

Browse files
committed
修复非String类型的主键错误问题
1 parent 184b88a commit 0a26dec

File tree

7 files changed

+26
-32
lines changed

7 files changed

+26
-32
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.hsweb.web.service.commons;
22

3+
import org.hsweb.web.bean.po.GenericPo;
34
import org.hsweb.web.dao.CRUMapper;
45
import org.hsweb.web.dao.InsertMapper;
56
import org.hsweb.web.dao.QueryMapper;
@@ -8,7 +9,10 @@
89
/**
910
* @author zhouhao
1011
*/
11-
public interface CRUService<Po, Pk> extends SimpleInsertService<Po, Pk>, SimpleQueryService<Po, Pk>, SimpleUpdateService<Po> {
12+
public interface CRUService<Po extends GenericPo<Pk>, Pk> extends
13+
SimpleInsertService<Po, Pk>,
14+
SimpleQueryService<Po, Pk>,
15+
SimpleUpdateService<Po,Pk> {
1216
CRUMapper<Po, Pk> getCRUMapper();
1317

1418
@Override

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

Lines changed: 0 additions & 9 deletions
This file was deleted.

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

Lines changed: 0 additions & 9 deletions
This file was deleted.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public interface SimpleDeleteService<Pk> extends DeleteService<Pk> {
1414
DeleteMapper getDeleteMapper();
1515

1616
default int delete(Pk pk) {
17-
return getDeleteMapper().delete(DeleteParam.build().where(GenericPo.Property.id, pk));
17+
return createDelete().where(GenericPo.Property.id, pk).exec();
1818
}
1919

2020
/**

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,21 @@
88
/**
99
* @author zhouhao
1010
*/
11-
public interface SimpleInsertService<Po, Pk> extends InsertService<Po, Pk> {
11+
public interface SimpleInsertService<Po extends GenericPo<Pk>, Pk> extends InsertService<Po, Pk> {
1212

1313
InsertMapper<Po> getInsertMapper();
1414

1515
void tryValidPo(Po data);
1616

17+
Class<Pk> getPKType();
18+
1719
@Override
1820
default Pk insert(Po data) {
19-
Pk primaryKey = null;
20-
if (data instanceof GenericPo) {
21-
if (((GenericPo) data).getId() == null)
22-
((GenericPo) data).setId(GenericPo.createUID());
23-
primaryKey = (Pk) ((GenericPo) data).getId();
21+
if (getPKType() == String.class && data.getId() == null) {
22+
((GenericPo<String>) data).setId(GenericPo.createUID());
2423
}
2524
tryValidPo(data);
2625
getInsertMapper().insert(InsertParam.build(data));
27-
return primaryKey;
26+
return data.getId();
2827
}
2928
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/**
1414
* @author zhouhao
1515
*/
16-
public interface SimpleUpdateService<Po> extends UpdateService<Po> {
16+
public interface SimpleUpdateService<Po extends GenericPo<Pk>, Pk> extends UpdateService<Po> {
1717

1818
UpdateMapper<Po> getUpdateMapper();
1919

@@ -36,8 +36,8 @@ default int update(List<Po> data) {
3636

3737
@Override
3838
default int saveOrUpdate(Po po) {
39-
if (po instanceof GenericPo && this instanceof QueryService) {
40-
Po old = (Po) ((QueryService) this).selectByPk(((GenericPo) po).getId());
39+
if (this instanceof QueryService) {
40+
Po old = ((QueryService<Po, Pk>) this).selectByPk(po.getId());
4141
if (old != null)
4242
return update(po);
4343
else {

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.hsweb.web.service.impl;
22

3+
import org.hsweb.commons.ClassUtils;
4+
import org.hsweb.web.bean.po.GenericPo;
35
import org.hsweb.web.bean.validator.ValidateResults;
46
import org.hsweb.web.core.exception.NotFoundException;
57
import org.hsweb.web.core.exception.ValidationException;
@@ -12,6 +14,7 @@
1214
import org.slf4j.Logger;
1315
import org.slf4j.LoggerFactory;
1416
import org.springframework.beans.factory.annotation.Autowired;
17+
import org.springframework.core.ResolvableType;
1518
import org.springframework.transaction.annotation.Transactional;
1619

1720
import javax.validation.ConstraintViolation;
@@ -28,9 +31,9 @@
2831
* @since 1.0
2932
*/
3033
@Transactional(rollbackFor = Throwable.class)
31-
public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po, PK>
34+
public abstract class AbstractServiceImpl<Po extends GenericPo<PK>, PK> implements GenericService<Po, PK>
3235
, SimpleQueryService<Po, PK>
33-
, SimpleUpdateService<Po>
36+
, SimpleUpdateService<Po, PK>
3437
, SimpleDeleteService<PK>
3538
, SimpleInsertService<Po, PK> {
3639
protected Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -40,6 +43,11 @@ public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po,
4043

4144
protected abstract GenericMapper<Po, PK> getMapper();
4245

46+
@Override
47+
public Class<PK> getPKType() {
48+
return (Class<PK>) ClassUtils.getGenericType(this.getClass(), 1);
49+
}
50+
4351
@Override
4452
public QueryMapper<Po, PK> getQueryMapper() {
4553
return getMapper();
@@ -80,4 +88,5 @@ protected void assertNotNull(Object po) {
8088
assertNotNull(po, "数据不存在");
8189
}
8290

91+
8392
}

0 commit comments

Comments
 (0)