当前位置: 首页 > news >正文

Day46(16)-F:\硕士阶段\Java\课程代码\后端\web-ai-code\web-ai-project02\tlias-web-management

事务管理

image-20251123195038813

@Transactional(rollbackFor = {Exception.class})//事务管理的注解 - 默认出现RuntimeException才会回滚
@Override
public void save(Emp emp) throws Exception{//1.保存员工的基本信息emp.setCreateTime(LocalDateTime.now());emp.setUpdateTime(LocalDateTime.now());empMapper.insert(emp);//int i = 1/0;arithmetic exception属于运行时异常,可以被识别if (true){throw new Exception("出错啦~~~");}//2.保存员工的基本工作经历信息List<EmpExpr> exprList = emp.getExprList();if (!CollectionUtils.isEmpty(exprList)){//遍历集合,为empId赋值exprList.forEach(empExpr->{empExpr.setEmpId(emp.getId());});empExprMapper.insertBatch(exprList);}
}

事务的传播行为

事务嵌套

image-20251123195313376

  1. 保证有异常还能继续执行:finally
  2. 保证不被回滚:REQUIRES_NEW
@Transactional(propagation = Propagation.REQUIRES_NEW)//需要在一个新的事务中运行,避免运行之后被回滚
@Override
public void insertLog(EmpLog empLog) {empLogMapper.insert(empLog);
}
 @Transactional(rollbackFor = {Exception.class})//事务管理的注解 - 默认出现RuntimeException才会回滚@Overridepublic void save(Emp emp) throws Exception{try {//1.保存员工的基本信息emp.setCreateTime(LocalDateTime.now());emp.setUpdateTime(LocalDateTime.now());empMapper.insert(emp);int i = 1/0;//arithmetic exception属于运行时异常,可以被识别
//        if (true){
//            throw new Exception("出错啦~~~");
//        }//2.保存员工的基本工作经历信息List<EmpExpr> exprList = emp.getExprList();if (!CollectionUtils.isEmpty(exprList)){//遍历集合,为empId赋值exprList.forEach(empExpr->{empExpr.setEmpId(emp.getId());});empExprMapper.insertBatch(exprList);}} finally {//放到finally中无论事务成功与否都会提交日志// 但是提交后被回滚了,所以不能成功保存日志,所以需要单独开启新事务,去empLogService对应的impl中添加transactional注解,并声明//记录操作日志:调用另外一个serviceEmpLog empLog = new EmpLog(null, LocalDateTime.now(), "新增员工:" + emp);empLogService.insertLog(empLog);}}

image-20251123202929813

image-20251123202942376

image-20251123203438996

文件上传

image-20251123203515737

image-20251123203726246

image-20251123203924537

image-20251123205440113

debug运行之后可以查看file的存放地址

C:\Users\Lenovo\AppData\Local\Temp\tomcat.8080.89517753953083888\work\Tomcat\localhost\ROOT

image-20251123210733606

image-20251123210902962

如果没有保存文件,程序运行结束之后,或者debug跳过改断点将程序运行完之后,会将上面该临时文件夹中的数据清空删除!!!

文件上传

本地存储

springboot文件上传最大单个文件上传大小为1mb,超过会报错无法上传。

需要在application.yml中配置文件上传大小的配置,输入multipart就可以搜到

servlet:multipart:#最大单个文件大小max-file-size: 10MB#最大请求大小(包括所有文件和表单数据)max-request-size: 100MB
package com.itheima.controller;import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;
import java.util.UUID;@Slf4j
@RestController
public class UploadController {@PostMapping("/upload")public Result upload(String name, Integer age, MultipartFile file) throws IOException {log.info("接收的参数:{},{},{}",name,age,file);//获取原始文件名String originalFilename = file.getOriginalFilename();//新的文件名String extension = originalFilename.substring(originalFilename.lastIndexOf("."));String newFileName = UUID.randomUUID().toString() + extension;//保存文件//file.transferTo(new File("F:/images/"+originalFilename));file.transferTo(new File("F:/images/"+newFileName));return Result.success();}
}

只需要在controller里面配置

image-20251123214450955

http://www.jsqmd.com/news/48701/

相关文章:

  • 完整教程:日本生活-东京新干线乘车经验-流程介绍
  • 代码随想录算法训练营第三天:链表part01
  • 2025-07-21-Mon-T-RocketMQ
  • 第一章 简介
  • 2025-07-13-Sun-T-AI-LangChain4j
  • P24_现有网络模型的使用及修改
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 第二讲类神经网络训练不起来
  • 【计算机网络】深入浅出DNS:网络世界的地址簿与导航系统 - 教程
  • 2025-01-24-Fri-T-如何做一个开源项目
  • 利用大语言模型分析技术支持诈骗Facebook群组的网络犯罪研究
  • 一些唐话
  • 2025-05-29-Thu-T-设计模式
  • 2025-05-27-Tue-T-JVM
  • 11-28
  • 20232421 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 20232315 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • [CISCN 2022 华东北]duck WP
  • 20232320 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 2025-01-14-Tue-T-实体关系图ERD
  • 《Either Way》
  • 20232424 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 2024-11-26-Tue-T-SSM
  • HTML游戏创建:利用视频作为特效自动播放的方法
  • 第四章-Tomcat线程模型与运行方式 - 指南
  • 11-21
  • 11-25
  • 11-24
  • 2023-10-15-R-如何阅读一本书
  • 2023-10-11-T-JAVA