Springboot后端开发进阶
文章介绍了新增员工功能的实现方法,包括批量插入数据、获取主键ID以及事务管理的具体操作。通过MyBatis注解和XML配置实现数据插入,并在Service层处理业务逻辑。同时说明了事务的定义和默认MySQL的自动提交机制。 2025-11-6 01:57:59 Author: www.freebuf.com(查看原文) 阅读量:6 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

web后端开发进阶

一、新增员工

1.知识点

  • 批量插入数据

    • 使用xml中foreach标签


    <insert id="insertBatch" >
        insert into emp_expr (emp_id,begin,end,company,job) values
        <foreach collection="list" item="empExpr" separator=",">
            (#{empExpr.empId},#{empExpr.begin},#{empExpr.end},#{empExpr.company},#{empExpr.job})
        </foreach>
    </insert>
    
    • image-20251104175156414

  • 获取插入主键id

    • 使用注解@Options()


    @Options(useGeneratedKeys = true,keyProperty = "id")
    @Insert("insert into emp(username, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time)" +
            " values (#{username}, #{name}, #{gender},#{phone},#{job},#{salary},#{image},#{entryDate},#{deptId},#{createTime},#{updateTime})")
    void insert(Emp emp);
    
    • 这样再插入数据时将会返回id值

2.具体实现

  • mapper
    *

    @Mapper
    

public interface EmpMapper {
Listlist(EmpQueryParam q);
@Options(useGeneratedKeys = true,keyProperty = "id")
@Insert("insert into emp(username, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time)" +
" values (#{username}, #{name}, #{gender},#{phone},#{job},#{salary},#{image},#{entryDate},#{deptId},#{createTime},#{updateTime})")
void insert(Emp emp);
}
```

  • service
    *

    @Override
    public void save(Emp emp) {
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);
    
        List<EmpExpr> list = emp.getExprList();
        if(!list.isEmpty()){
            list.forEach(item->{
                item.setEmpId(emp.getId());
            });
            empExprMapper.insertBatch(list);
        }
    }
    
  • controller
    *

    @PostMapping
    public Result save(@RequestBody Emp emp){
        log.info("新增员工,参数:{}",emp);
        empService.save(emp);
        return Result.success();
    }
    

二、事务

1.定义

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

  • 默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

2.具体操作

  • 数据库中
    *

免责声明

1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。

2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。

3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/web/455844.html
如有侵权请联系:admin#unsafe.sh