tlias管理系统--事务管理-事务进阶-rollbackFor属性

This commit is contained in:
2025-12-07 15:08:38 +08:00
parent a10456f024
commit 25e5c08574
4 changed files with 27 additions and 3 deletions

View File

@@ -36,7 +36,7 @@ public class DeptController {
} }
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
public Result delete(@PathVariable Integer id){ public Result delete(@PathVariable Integer id) throws Exception {
log.info("删除部门:{}",id); log.info("删除部门:{}",id);
deptService.delete(id); deptService.delete(id);
return Result.success(); return Result.success();

View File

@@ -65,4 +65,11 @@ public interface EmpMapper {
@Select("select * from emp where username = #{username} and password = #{password} ") @Select("select * from emp where username = #{username} and password = #{password} ")
Emp getEmpByUserNameAndPassword(Emp emp); Emp getEmpByUserNameAndPassword(Emp emp);
/**
* 根据部门id删除员工
* @param deptId
*/
@Delete("delete from emp where dept_id = #{deptId}")
void deleteByDeptId(Integer deptId);
} }

View File

@@ -14,7 +14,7 @@ public interface DeptService {
* 根据id删除部门 * 根据id删除部门
* @param id * @param id
*/ */
void delete(Integer id); void delete(Integer id) throws Exception;
/** /**
* 新增部门 * 新增部门

View File

@@ -1,11 +1,13 @@
package com.inmind.service.impl; package com.inmind.service.impl;
import com.inmind.mapper.DeptMapper; import com.inmind.mapper.DeptMapper;
import com.inmind.mapper.EmpMapper;
import com.inmind.pojo.Dept; import com.inmind.pojo.Dept;
import com.inmind.service.DeptService; import com.inmind.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@@ -15,6 +17,10 @@ public class DeptServiceImpl implements DeptService {
@Autowired//从spring容器中获取DeptMapper类的实现类对象进行自动注入(DI) @Autowired//从spring容器中获取DeptMapper类的实现类对象进行自动注入(DI)
private DeptMapper deptMapper; private DeptMapper deptMapper;
@Autowired
private EmpMapper empMapper;
/** /**
* 查询所有部门信息 * 查询所有部门信息
* @return * @return
@@ -30,9 +36,20 @@ public class DeptServiceImpl implements DeptService {
* 根据id删除部门 * 根据id删除部门
* @param id * @param id
*/ */
@Transactional(rollbackFor = Exception.class)//将当前的删除功能交给事务管理,达到全成功或全失败的业务功能
@Override @Override
public void delete(Integer id) { public void delete(Integer id) throws Exception {
deptMapper.delete(id); deptMapper.delete(id);
//todo 可能存在大量的业务处理代码,而代码可能会出现业务异常
// int a = 1/0;
if (true) {
throw new Exception();//模拟抛出一个编译时异常
}
//当删除部门时,也要把相关的员工删除掉
empMapper.deleteByDeptId(id);
} }
@Override @Override