@Trasactional标签什么时候加什么时候不加?为什么这个方法没加@Trasactional

public class PayMentTransacTokenServiceImpl extends BaseApiService implements PayMentTransacTokenService {
@Autowired
private PaymentTransactionMapper paymentTransactionMapper;

@Autowired
private GenerateToken generateToken;

@Override
public BaseResponse<JSONObject> cratePayToken(PayCratePayTokenDto payCratePayTokenDto) {
    String orderId = payCratePayTokenDto.getOrderId();
    if (StringUtils.isEmpty(orderId)) {
        return setResultError("订单号码不能为空!");
    }
    Long payAmount = payCratePayTokenDto.getPayAmount();
    if (payAmount == null) {
        return setResultError("金额不能为空!");
    }
    Long userId = payCratePayTokenDto.getUserId();
    if (userId == null) {
        return setResultError("userId不能为空!");
    }
    // 2.将输入插入数据库中 待支付记录
    PaymentTransactionEntity paymentTransactionEntity = new PaymentTransactionEntity();
    paymentTransactionEntity.setOrderId(orderId);
    paymentTransactionEntity.setPayAmount(payAmount);
    paymentTransactionEntity.setUserId(userId);
    // 使用雪花算法 生成全局id
    paymentTransactionEntity.setPaymentId(SnowflakeIdUtils.nextId());
    int result = paymentTransactionMapper.insertPaymentTransaction(paymentTransactionEntity);
    if (!toDaoResult(result)) {
        return setResultError("系统错误!");
    }
    // 获取主键id
    Long payId = paymentTransactionEntity.getId();
    if (payId == null) {
        return setResultError("系统错误!");
    }

    // 3.生成对应支付令牌
    String keyPrefix = "pay_";
    String token = generateToken.createToken(keyPrefix, payId + "");
    JSONObject dataResult = new JSONObject();
    dataResult.put("token", token);

    return setResultSuccess(dataResult);
}

}

需要事务性处理的时候要加,所谓事务性,就是多个操作要么全部执行,要么全部不执行,不允许执行一半

在同一个方法中涉及到多个增、删、改的SQL,要求要么一起成功,要么一起失败,那么就使用@Transaction注解,上述方法中只有一个insertPaymentTransaction方法涉及到数据库数据变更,其他的SQL都是查询,所以可以不用加事务注解