try catch 事务处理

1:事务+try catch

//要点1:添加注解  @Transactional
//要点2:适用try catch 
//要点3: catch里添加 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@Override
@Transactional
public ResultData save(Model req) {
    try {
 		//业务代码
    } catch (Exception e) {
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        e.printStackTrace();
        logger.error("saveHousekeeperInfo :异常",e);
        return ResultData.error("新增异常");
    }

}

为何添加了事务处理还用到try catch ?这是因为不加try catch 的话,sql本身执行时的异常是无法捕捉到的,try catch可以解决这一问题。

2:一个表里存在多个字典值(存的数字),如何有效返回字典对应的描述

一个表里若是只有一个字典值时,我们可以直接关联字典表,获取相应的含义,但若是一个表存在多个字典值呢?
这时候再关联字典表就很不友好了且大大降低查询效率。

为此,大家可以尝试以下方式:

// 首先获取所用到的所有字段字典信息
        List<String> dictParam = Arrays.asList("customer_source","order_status", "sys_yes_no","service_satisfaction");
        List<SysDictData> dictList = sysDictDataMapper.selectDictListByTypeList(dictParam);
        Map<String, SysDictData> dictMap = Maps.newHashMap();
// 其次按照字段类型,字典值进行分组
        dictMap = dictList.stream().collect(Collectors.toMap(i -> StringUtils.join("|", i.getDictType(), i.getDictValue()), Function.identity()));

//然后:按照字典类型以及表里对应的值组合类型和分组后的字典信息进行匹配
           String keyType = StringUtils.getDictKey("order_status", info.getOrderStatus());
            if (finalDictMap.containsKey(keyType)) {
                SysDictData dict = finalDictMap.get(keyType);
                info.setOrderStatusShow(dict.getDictLabel());
            }


	
    public static String getDictKey(String dictType, String value) {
        return StringUtils.join("|", dictType, value);
    }


欢迎大家留言交流讨论

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博客胡

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值