事务机制及Spring事务管理

事务概览

事务是一组操作的集合,它是一个不可分割的工作单位。 事务会将所有的操作作为一个整体一起向系统提交或撤销操作请求,换句话说:这些操作要么同时成功、要么同时失败。

具体案例

我们先看一个需求:现在有两张数据库表:员工表emp员工工作经历表emp_expr,现在需要完成新增一个员工的需求,我们需要在员工表中添加员工的基本信息和在员工工作经历表中添加员工的工作经历,这个业务操作就包含了两个操作,根据需求可以先写一个Service方法:

/**
 * 新增员工
 * @param emp 员工实体对象
 */
@Override
public void addEmp(Emp emp) {
    // 为新增员工补全属性
    emp.setCreateTime(LocalDateTime.now());
    emp.setUpdateTime(LocalDateTime.now());
    // 新增员工
    empMapper.insertEmp(emp);
    // 批量添加员工工作经历
    Integer empId = emp.getId();
    List<EmpExpr> exprList = emp.getExprList();
    // CollectionUtils.isEmpty不但会检查集合是否为空,还会检查集合是否为null
    if (!CollectionUtils.isEmpty(exprList)) {
        exprList.forEach(empExpr -> empExpr.setEmpId(empId));
        empExprMapper.insertBatch(exprList);
    }
}

这个Service中的方法先会给Emp员工实体对象补全信息,然后将这些信息添加到数据库表emp中:

/**
 * 新增员工
 * @param emp 员工实体对象
 */
@Insert("insert into emp(username, name, gender, phone, job, salary, " +
        "image, entry_date, dept_id, create_time, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值