場景描述:前端以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>
測試: