<insert id="batchInsertTestMethod" parameterType="List">
<if test="list != null and list.size() > 0">
INSERT INTO BATCH_OPTIONS_TEST(ID,NAME)
<foreach collection="list" item="obj" separator="UNION ALL">
SELECT (#{obj.id,jdbcType=VARCHAR},#{obj.name,jdbcType=VARCHAR}) FROM DUAL
</foreach>
</if>
</insert>
测试新增数据成功,返回值等于list的大小。
(3) 总结
批量新增第二种方式更好,也可以根据实际需求,批次批量新增。
2:MyBatis 批量更新
接口BatchOptionTestMapper新增两个更新方法。
public interface BatchOptionTestMapper {
int batchUpdateTestMethodOne(@Param(value="list")List<String> dataList,@Param(value="name")String name);
int batchUpdateTestMethodTwo(@Param(value="list")List<BatchOptionTest> dataList);
}
(1)批量更新方式1 (比如将ID是1和2的数据name修改为Smartisan T2)
<insert id="batchUpdateTestMethodOne" >
<if test="list != null and list.size() > 0">
UPDATE BATCH_OPTIONS_TEST
<set>
NAME = #{name,jdbcType=VARCHAR}
</set>
<where>
ID IN
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id,jdbcType=VARCHAR}
</foreach>
</where>
</if>
</insert>