@Transactional(rollbackFor = Exception.class) public void addMenu(AddMenuQuery addMenuQuery) { List<MenuEntity> menuEntities = menuDao.selectList(new QueryWrapper<MenuEntity>() .eq("is_deleted", Constant.SUCCESS).eq("menu_name", addMenuQuery.getMenuName())); if (Objects.nonNull(menuEntities) && !menuEntities.isEmpty()) { throw new BaseBusinessException(ResponseCodeEnum.THE_NAME_ALREADY_EXISTS.getCode(), ResponseCodeEnum.THE_NAME_ALREADY_EXISTS.getMessage()); } try { MenuEntity menuEntity = new MenuEntity(); BeanUtils.copyProperties(addMenuQuery, menuEntity); menuEntity.setMenuId(CreateIdUtils.createId()); menuEntity.setIsDeleted(Constant.SUCCESS); menuEntity.setIsVip(Constant.SUCCESS); menuEntity.setStatus(Constant.SUCCESS); int result = menuDao.insert(menuEntity); if (result == 0) { log.info("添加菜单失败"); throw new DissatisfyConditionException("添加菜单失败"); } } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); throw new BaseBusinessException(ResponseCodeEnum.FAIL.getCode(), e.getMessage()); } }优化代码
时间: 2024-01-04 13:02:54 浏览: 31
这段代码存在几个可以优化的点:
1. 对查询结果的判断可以使用 Optional 类型来进行简化;
2. 对 menuEntity 的赋值可以使用构造函数代替,避免重复调用 set 方法;
3. 对插入结果的判断可以使用 if-throw 语句代替 if-return 语句,避免多余代码;
4. 对异常处理的方式可以使用 try-with-resources 来代替 try-catch-finally,避免手动关闭资源。
优化后的代码如下:
```
@Transactional(rollbackFor = Exception.class)
public void addMenu(AddMenuQuery addMenuQuery) {
Optional<MenuEntity> menuEntityOptional = menuDao.selectOne(
new QueryWrapper<MenuEntity>()
.eq("is_deleted", Constant.SUCCESS)
.eq("menu_name", addMenuQuery.getMenuName())
);
if (menuEntityOptional.isPresent()) {
throw new BaseBusinessException(ResponseCodeEnum.THE_NAME_ALREADY_EXISTS.getCode(),
ResponseCodeEnum.THE_NAME_ALREADY_EXISTS.getMessage());
}
MenuEntity menuEntity = new MenuEntity(
CreateIdUtils.createId(),
addMenuQuery.getMenuName(),
addMenuQuery.getMenuPrice(),
Constant.SUCCESS,
Constant.SUCCESS,
Constant.SUCCESS
);
int result = menuDao.insert(menuEntity);
if (result == 0) {
log.info("添加菜单失败");
throw new DissatisfyConditionException("添加菜单失败");
}
}
```