javaWeb开发之后端实战3
1.新增员工
接口文档:

思路:
保存员工的基本信息(表:emp)
批量保存员工的工作经历信息(表:emp_expr)
三层架构:

保存员工基本信息:代码示例
EmpController:

EmpServiceImpl:

EmpMapper:

批量保存工作经历
需要用动态sql里面的属性<foreach>
EmpExprMapp:
public voidinsertBatchinsertBatch((ListList<<EmpExprEmpExpr> exprList);
EmpExprMapper.xml:

<foreach>属性
作用:遍历集合/数组
说明:
1collection:集合名称 item:集合遍历出来的元素/项
separator:每一次遍历使用的分隔符 open:遍历开始前拼接的片段
close:遍历结束后拼接的片段
在插入数据之后,获取主键值 :
@Options(useGeneratedKeys = true, keyProperty = "id")
保存员工的基本信息成功了,而保存工作经历失败了,是不可以的:
因为这属于一个业务操作,如果保存员工信息成功了,保存工作经历信息失败了,就会造成数据库数据的不完整、不一致。
2.事物管理
事务 :一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作 要么同时成功,要么同时失败。
例如:添加员工信息的时候,员工的基本信息和员工的工作经历信息都要同时完成
注:
默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。
操作:
事务控制主要三步操作:开启事务、提交事务/回滚事务。
开启事务:start transaction; /begin;
提交事务:commit;
回滚事务:rollback;
示例:

3.Spring事务管理-控制事务:
保存员工信息成功了,保存工作经历信息失败了,就会造成数据库数据的不完整、不一致。
注解:@Transactional
作用:
将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务
使用位置:
方法上:推荐

类上:

接口上:

在application.yml中:
配置日志信息,查看spring事务管理的底层日志

4.事务进阶
rollbackFor:
用于控制出现何种异常类型,回滚事务
在EmpServiceImpl上:

propagation:
事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制
新建:

加入:


常见的传播行为及应用场景:
REQUIRED:大部分场景
REQUIRES_NEW:希望两个方法在独立的事务中运行,互不影响
5.新增员工信息,记录日志
需求:在新增员工信息时,无论是成功还是失败,都要记录操作日志。
步骤:
准备日志表emp_log、实体类EmpLog、Mapper接口EmpLogMapper;
在新增员工时记录日志
代码示例:

事务四大特性:
原子性Atomicity:事务是不可分割的最小单元,要么全部成功,要么全部失败
一致性Consistency:事务完成时,必须使所有的数据都保持一致状态
隔离性Isolation:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性Durability:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
6.文件上传
是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程

本地存储:代码示例

将上传的文件存储在服务器本地:
multipartFile.getOriginalFilename():获取原始文件名
multipartFile.transferTo(File dest):将文件转存到磁盘文件
上传文件大小受限:
默认上传文件的最大大小为1MB,超过大小需要在配置文件配置

6.阿里云OSS
使用OSS,可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件

第三方服务通用思路:
准备工作->参照官方SDK编写入门程序->集成使用
阿里云OSS-使用步骤:
注册阿里云(实名认证) ->充值->开通对象存储服务(OSS)->创建bucket->
->获取并配置AccessKey(秘钥)->参照官方SDK编写入门程序参照官方SDK编写入门程序案例->集成OSS
Bucket:存储空间是用户用于存储对象的容器,所有的对象都必须隶属于某个存储空间
SDK:软件开发工具包,包括辅助软件开发的依赖(jar包)、代码示例等,都可以叫做SDK
7.阿里云OSS-案例集成
步骤:
1.引入阿里云OSS文件上传工具类(由官方的示例代码改造而来)
2.上传文件接口开发

8.参数配置化:@Value("${key}") @ConfigurationProperties
指将一些需要灵活变化的参数,配置在配置文件中,然后通过@Value注解来注入外部配置的属性

但是使用@Value注解注入配置文件的配置项,如果配置项多,注入繁琐,不便于维护管理和复用。
所以用到@ConfigurationProperties
注入外部配置文件中的配置项的两种方式:
@Value:一个属性一个属性的注入
@ConfigurationProperties:批量将多个属性注入到bean对象中
两种方式各自的使用场景:
如果属性较少,建议@Value注入即可
如果属性较多,考虑复用,建议使用@ConfigurationProperties
更多推荐



所有评论(0)