mybatis 批量保存注意事项

时间:2022-12-21 07:59:32

一:配置文件如下:

<insert id="insertByList" parameterType="java.util.List" >
insert into ec_custom_question (ID, VERSION, PAPER_ID,
QUESTION_ID, STATUS, CREATED_BY,
creation_date, LAST_UPDATED_BY, LAST_UPDATED_DATE,
ENABLED_FALG, ques_order, model_id
)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id,jdbcType=INTEGER}, #{item.version,jdbcType=INTEGER}, #{item.paperId,jdbcType=INTEGER},
#{item.questionId,jdbcType=INTEGER}, #{item.status,jdbcType=CHAR}, #{item.createdBy,jdbcType=INTEGER},
#{item.creationDate,jdbcType=TIMESTAMP}, #{item.lastUpdatedBy,jdbcType=INTEGER}, #{item.lastUpdatedDate,jdbcType=TIMESTAMP},
#{item.enabledFalg,jdbcType=CHAR}, #{item.quesOrder,jdbcType=INTEGER}, #{item.modelId,jdbcType=VARCHAR}
)
</foreach>
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="ID">
SELECT LAST_INSERT_ID();
</selectKey>
</insert>
注意:

1.查看parameterType的类型是不是java.util.List类型,如果是的话,看foreach 的collection属性是不是list,

 因为 传递一个 List 实例或者数组作为参数对象传给 MyBatis,MyBatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键 

2.看一下foreach里面的值有没有传递进来

3.还有就是我用Mybatis的时候,用mysql的值插入自动增长值,里面的key我在数据库中没有设置自动增长,然后我又用了selectkey,所以也会出现这种情况

dao层直接传递list过来即可