mybatis-批量插入

批量插入的语法是这样的,只要在values 后面增加插入的值就可以了。

insert into tbl_emp (emp_id, emp_name, gender,email, d_id) values ( ?,?,?,?,? ) , ( ?,?,?,?,? ) , ( ?,?,?,?,? ) , ( ?,?,?,?,? ) ,
( ?,?,?,?,? ) , ( ?,?,?,?,? ) , ( ?,?,?,?,? ) , ( ?,?,?,?,? ) , ( ?,?,?,?,? ) , ( ?,?,?,?,? )

在Mapper 文件里面,我们使用foreach 标签拼接values 部分的语句:

<!-- 批量插入-->
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true">
	<selectKey resultType="long" keyProperty="id" order="AFTER">
		SELECT LAST_INSERT_ID()
	</selectKey>
	insert into tbl_emp (emp_id, emp_name, gender,email, d_id)
	values
	<foreach collection="list" item="emps" index="index" separator=",">
		( #{emps.empId},#{emps.empName},#{emps.gender},#{emps.email},#{emps.dId} )
	</foreach>
</insert>

Java 代码里面,直接传入一个List 类型的参数。

我们来测试一下。效率要比循环发送SQL 执行要高得多。最关键的地方就在于减少了跟数据库交互的次数,并且避免了开启和结束事务的时间消耗。

 

上一篇:基于maven+ssm的增删改查之带分页的显示员工相关信息(基于bootstrap)


下一篇:asp.net mvc UpdateModel 更新对象后出现null