spring boot + mybatis實現批量插入數據


場景描述:前端以List的形式傳入多條待插入數據,調用mybatis-generator自動生成的insert接口一次只能插入一條數據,當然可以寫一個for循環一條條插入,但感覺效率太低;所以嘗試下一條sql插入多條數據;

解決方案:使用foreach方法來實現多條記錄的批量插入

實現方式如下:

controller

@ApiOperation(value = "新增多個部門")
@PostMapping("insertDepartments")
public ResultMsg newDepartment(@RequestBody List<Department > departments ) {
    int result = departmentService.insertDepts(departments);
    return ResultMsg.getStrMsg(result > 0 ? "SUCCESS" : "FAILED");
}

service

public int insertDepts(List<Department > departments)
{
    try{
        return departmentMapper.insertDepartments(departments);
    }catch (Exception e )
    {
        logger.info(e.toString());
        return -1;
    }
}

mapper

int insertDepartments(List<Department> list);

xml

<insert id="insertDepartments" useGeneratedKeys="true" keyProperty="id" parameterType="com.wg.demo.po.Department">
  insert into department (id, dept_name, descr, 
    create_time)
  values
    <foreach collection="list" item="dept" index="index" separator=",">
      (#{dept.id,jdbcType=BIGINT}, #{dept.deptName,jdbcType=VARCHAR}, #{dept.descr,jdbcType=VARCHAR},
      #{dept.createTime,jdbcType=TIMESTAMP})
    </foreach>
</insert>

測試:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM