代码中怎么写事务?

代码中注解的编写方法
博客介绍了代码中编写注解的方法。首先给出相关文章链接,看完可知添加注解@Transactional和catch后的回滚代码即可。还给出了具体代码示例,包含积分记录查询、更新等操作,以及异常处理时的回滚设置。

代码中怎么写注解?
1,第一步:看这篇文章介绍:
https://blog.youkuaiyun.com/wkl305268748/article/details/77619367
2,看完这篇文章,就知道只要添加一个注解@Transactional和catch后的回滚:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();就可以。
3,第三步:所以写在代码中就是如下:

/**
 * 回返用户积分
 * @param memberId 用户id
 * @return
 * @throws ServiceException
 */
**@Transactional**
RespReturnMemberPointsDTO returnMemberPoints(long memberId,String orderNo, int source);

@Override
public RespReturnMemberPointsDTO returnMemberPoints(long memberId, String orderNo, int source) {
log.info(“returnMemberPoints.memberId={}”,memberId);
RespReturnMemberPointsDTO respReturnMemberPointsDTO=new RespReturnMemberPointsDTO();
try {
//查询积分记录表是否有关于该用户的记录
PointRecordDO pointRecordDO = pointRecordDOMapper.queryPointRecordDOByOrderFlowNoAndSource(memberId, orderNo, source);
if (pointRecordDO != null) {
if ((System.currentTimeMillis() - pointRecordDO.getCreateTime().getTime()) / (1000 * 60 * 60 * 24) > 15) {
log.error(“距离积分扣减时间超过15天,orderNo:{}”, orderNo);
respReturnMemberPointsDTO.setIsReturnPoint(false);
throw new ServiceException(ResponseEnum.ERROR_500.getCode(), “距离积分扣减时间超过15天,orderNo:{}” + orderNo);
}
//将查出来的记录变更为已删除
PointRecordDO pointRecord = new PointRecordDO();
pointRecord.setId(pointRecordDO.getId());
pointRecord.setFlag((byte) 1);
int i = pointRecordDOMapper.updateByPrimaryKeySelective(pointRecord);
if (i != 1) {
log.error(“更新表失败,memberId:{}”, memberId);
respReturnMemberPointsDTO.setIsReturnPoint(false);
throw new ServiceException(ResponseEnum.ERROR_500.getCode(), “更新会员积分表失败,memberId:{}” + memberId);
}
//返回用户积分–更新用户积分
int j = memberPointDOMapper.updateByPointUpward(memberId, pointRecordDO.getPoints());
if (j != 1) {
log.error(“更新表失败,memberId:{}”, memberId);
respReturnMemberPointsDTO.setIsReturnPoint(false);
throw new ServiceException(ResponseEnum.ERROR_500.getCode(), “更新会员积分表失败,memberId:{}” + memberId);
}
respReturnMemberPointsDTO.setIsReturnPoint(true);
}else{
log.error(“积分记录表不存在该会员记录,memberId:{}”, memberId);
respReturnMemberPointsDTO.setIsReturnPoint(false);
}
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

e.printStackTrace();
}
return respReturnMemberPointsDTO;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值