感觉非空判断好像没有一套严格的规范,很多时候都忘了做,或者感觉很多地方完全没必要做
比如,下面这两个service层方法:
(1)为什么第一个方法不用对shopAuthId做非空判断,而第二个需要做非空判断,请问老师您判断的依据是什么,我们在写service层之前只写了dao层,所以是根据dao层来判断吗?还是根据具体的业务功能实现来决定?
(2)这里如果不做非空判断有可能会出现什么样的问题呢?以第二个方法为例,我是这么考虑的:这里调用的是dao层的updateShopAuthMap()方法,参数是shopAuthId,对应的数据库表的shop_auth_id列,这个列是必须非空的,如果传入空值的话会报错。如果按照这样理解的话,那么第一个方法也应该进行非空判断吧,所以这里很困惑,希望老师能够指点一下
@Override
public ShopAuthMap getShopAuthMapById(Long shopAuthId) {
return shopAuthMapDao.queryShopAuthMapById(shopAuthId);
}
@Override
public ShopAuthMapExecution modifyShopAuthMap(ShopAuthMap shopAuthMap) throws ShopAuthMapOperationException {
// 空值判断,主要是对授权Id做校验
if (shopAuthMap == null || shopAuthMap.getShopAuthId() == null) {
return new ShopAuthMapExecution(ShopAuthMapStateEnum.NULL_SHOPAUTH_ID);
} else {
try {
shopAuthMap.setLastEditTime(new Date());
int effectedNum = shopAuthMapDao.updateShopAuthMap(shopAuthMap);
if (effectedNum <= 0) {
return new ShopAuthMapExecution(ShopAuthMapStateEnum.INNER_ERROR);
} else {// 创建成功
return new ShopAuthMapExecution(ShopAuthMapStateEnum.SUCCESS, shopAuthMap);
}
} catch (Exception e) {
throw new ShopAuthMapOperationException("modifyShopAuthMap error: " + e.getMessage());
}
}
}
SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需
了解课程