概述
一、使用事务的方法
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使用事务注解不生效的原因所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复