发表于: 2019-11-08 23:36:10
1 1132
主要完成小课堂,获得后台账户id的util方法。
用@使用@Transactional注解,回滚无效
这个搞了半天没结果,各种错误都试了,都没有结果
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)
@Override
public boolean saveRolePerms(Role role, List<Long> permissionIds) {
//新增角色信息
roleMapper.insertSelective(role);
int i=10/0;
Long roleId = role.getId();
//保存角色和权限的关系
for (Long permissionId : permissionIds) {
roleMapper.insertRolePerm(roleId, permissionId);
}
return true;
}
四、收获:
1.学习了事务处理@Transactional注解的一些坑。
@Transactional注解只有在public 方法才有效。
异常类型是不是unchecked异常,如果checke异常也要进行回滚,就需要注解上面写明异常类型
@Transactional(rollbackFor=Exception.class)
数据库引擎要支持事务,Mysql中innoDB能支持事务,而MyISAM是不支持事务的。
检测异常是不是被catch住了,如果被catch,则会不生效。
一个类中,非@Transactional注解调用@Transactional注解的方法,注解的方法中的@Transactional不起作用
Transactional是否生效, 仅取决于是否加载于接口方法, 并且是否通过接口方法调用(而不是本类调用)。
2.学习了什么是hash和hashMap的一些知识。
评论