我是靠谱客的博主 斯文万宝路,最近开发中收集的这篇文章主要介绍springboot使用事务注解不生效的原因,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、使用事务的方法

1、启动类添加注解开启事务

@EnableTransactionManagement

package com.operative.main;
@MapperScan("com.operative.**.mapper")
@ComponentScan(basePackages = {"com.operative.core","com.operative","com.operative.main"})
@SpringBootApplication
@EnableTransactionManagement//开启mysql事务
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}

2、在实现类的方法上添加注解@Transactional//添加mysql事务

@Service
public class ProsSeriesServiceImpl extends ServiceImpl<ProsSeriesMapper, ProsSeries> implements ProsSeriesService {
@Autowired
private ProsSeriesMapper prosSeriesMapper;
@Override
@Transactional//添加mysql事务
public ResponseData<Object> postSeries(ProsSeriesVO prosSeriesVO){
ProsSeries prosSeries = new ProsSeries();
prosSeries.setName(prosSeriesVO.getName());
prosSeriesMapper.insert(prosSeries);
QueryWrapper<ProsSeries> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("created_at").last("limit 1");
final List<ProsSeries> prosSeries1 = prosSeriesMapper.selectList(queryWrapper);
final Integer id = prosSeries1.get(0).getId();//获取id
final ProsType prosType = prosTypeMapper.selectById(prosSeriesVO.getTypeId());
if (prosType==null){
throw new RuntimeException();
//
return Result.error("假体类型不存在");
}
final List<Integer> list = JSON.parseArray(prosType.getSeriesIds(), Integer.class);
list.add(id);
prosType.setSeriesIds(list.toString());
prosTypeMapper.updateById(prosType);//假体类型中修改假体系列id数组
return Result.success();
}
}

二、我遇到的没触发事务的原因

在上面实现类代码中判断中,需要抛出异常,而不是返回错误。

 if (prosType==null){
throw new RuntimeException();
//
return Result.error("假体类型不存在");
}

最后

以上就是斯文万宝路为你收集整理的springboot使用事务注解不生效的原因的全部内容,希望文章能够帮你解决springboot使用事务注解不生效的原因所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部