一,后端简单删除功能实现
一.Tlias案例删除员工功能整体实现架构
- 控制层 (EmpController.java)
使用 @DeleteMapping 注解处理 DELETE 请求
接收前端传递的员工 ID 列表作为参数
调用服务层完成删除操作
返回统一的结果响应格式 - 服务层 (EmpServiceImpl.java)
实现了 EmpService 接口的 delete 方法
使用 @Transactional(rollbackFor = Exception.class) 注解保证事务性
同时删除员工主信息及相关的工作经历信息,确保数据一致性 - 数据访问层 (EmpMapper.java 和 EmpExprMapper.java)
EmpMapper 处理员工基本信息的删除
EmpExprMapper 处理员工工作经历信息的删除
使用 MyBatis 的 XML 配置实现批量删除 SQL 语句
二.修改员工时的查询回显
功能实现流程
1.前端请求:通过 GET /emps/{id} 请求获取指定ID的员工信息
2.控制器层:EmpController 接收请求,调用服务层方法
3.服务层:EmpServiceImpl 调用数据访问层方法获取员工信息
4.数据访问层:EmpMapper 执行MyBatis查询,关联查询员工基本信息和工作经历
5.结果封装:通过MyBatis的resultMap将查询结果映射到Emp对象,包括其关联的exprList工作经历列表
6.响应返回:通过统一结果封装类Result返回查询结果
重要注解说明
注解
@GetMapping(“/{id}”)作用于
EmpController.getInfo()方法
指定该方法处理GET请求,路径为/emps/{id},其中{id}是路径参数
@PathVariable作用于
getInfo()方法的id参数
将URL路径中的{id}变量绑定到方法参数上
MyBatis映射配置要点
关联查询:使用left join连接员工表(emp)和工作经历表(emp_expr)
ResultMap映射:
使用
通过property=”exprList”指定映射到Emp类的exprList属性
使用别名方式解决字段名和属性名不一致问题(如ee.id ee_id)
数据模型结构
Emp类包含员工基本信息和List
EmpExpr类表示员工的单条工作经历信息
通过以上实现,员工查询回显功能能够完整地返回员工基本信息及其所有工作经历信息
三.Tlias案例 修改员工,修改数据
整体架构流程
1.前端发起请求:发送PUT请求到 /emps 接口,携带需要更新的员工数据
2.控制层处理:EmpController 接收请求并解析参数
3.业务逻辑层:EmpService 处理业务逻辑
4.数据访问层:EmpMapper 执行数据库更新操作
5.返回结果:通过统一响应格式返回操作结果
- 控制层 (EmpController)
1
2
3
4
5
6
7@PutMapping
public Result update(@RequestBody Emp emp) {
log.info("更新员工信息: {}", emp);
empService.update(emp);
return Result.success();
} - 服务层 (EmpService 和 EmpServiceImpl)
服务层需要定义和实现更新方法:实现类中需要设置更新时间并调用Mapper:1
void update(Emp emp);
1
2
3
4
5@Override
public void update(Emp emp) {
emp.setUpdateTime(LocalDateTime.now());
empMapper.updateById(emp);
} - 数据访问层 (EmpMapper)
实现类中需要设置更新时间并调用Mapper:1
void updateById(Emp emp);
- MyBatis映射 (EmpMapper.xml)
XML中使用动态SQL实现部分字段更新
二,分析Tlias案例中全局异常处理器的使用
分析Tlias案例中全局异常处理器的使用
当系统中发生未被捕获的异常时,会由这个全局异常处理器处理
如果是DuplicateKeyException类型,则执行对应的处理方法,解析出重复的值并返回给前端
如果是其他类型的异常,则执行通用的异常处理方法,记录日志并返回默认错误信息
使用的重要注解
@RestControllerAdvice
这是最重要的注解,它组合了@ControllerAdvice和@ResponseBody的功能:
将该类标记为全局异常处理类
可以定义全局的@ExceptionHandler方法
自动将返回结果转换为JSON格式响应
@ExceptionHandler
用于标记具体的异常处理方法:
第一个@ExceptionHandler方法没有指定具体异常类型,处理所有Exception及其子类异常
第二个@ExceptionHandler专门处理DuplicateKeyException异常,这种针对特定异常的处理具有更高的优先级
@Slf4j
Lombok提供的日志注解,自动生成日志对象,便于在代码中记录日志信息。
特点分析
分层处理机制:通过多个@ExceptionHandler方法实现了不同粒度的异常处理
用户友好错误提示:特别是对于重复键异常,能够解析出具体哪个值重复,并给出明确提示
统一响应格式:所有异常最终都会封装成Result对象返回,保持接口响应格式的一致性
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~