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

更多推荐