day04--9-Web实战(员工管理)

21 阅读1分钟

1)新增员工(emp + emp_expr)

  • 接口:POST /emps@RequestBody Emp emp

  • 先插入 emp 主表,用 @Options(useGeneratedKeys=true, keyProperty="id") 回填主键 id

  • 再插入 工作经历 emp_expr

    • Emp 增加 exprList
    • 给每条经历补 empId
    • MyBatis XML 用 <foreach> 批量插入

2)事务管理(保证两表一致)

  • 新增员工是一个业务:emp 插入 + emp_expr 插入必须同成同败

  • Service 方法加 @Transactional

    • 成功提交,异常回滚
  • 默认只对 RuntimeException 回滚

    • 要让所有异常回滚:@Transactional(rollbackFor = Exception.class)
  • 传播行为重点两个:

    • REQUIRED(默认):有事务就加入

    • REQUIRES_NEW:独立新事务

      • 常用于“日志必须记录”,不受主业务回滚影响

3)文件上传(头像)

  • 上传三要素:file 域 + POST + multipart/form-data

  • Spring 接收:MultipartFile file(参数名不一致用 @RequestParam

  • 本地存储优化:

    • 用 UUID 防止重名覆盖
    • 配置上传大小限制(默认单文件 1MB)

4)阿里云 OSS 上传(生产方案)

  • 后端收到文件 → 上传 OSS → 返回 图片 URL 给前端保存

  • 抽工具类 AliyunOSSOperator:生成目录 yyyy/MM + UUID 文件名,putObject 上传,拼接 URL 返回

  • 配置优化:endpoint/bucket/region 不写死

    • @Value 或更推荐 @ConfigurationProperties(prefix="aliyun.oss")