Mybatis+Mysql 批量插入的时候返回主键ID

来源:互联网 发布:淘宝免费推广软件 编辑:程序博客网 时间:2024/06/06 02:33
<insert id="insertAlarmLinkmanList" useGeneratedKeys="true" keyProperty="alarmLinkmanId" >  insert into alarm_linkman (user_name, project_id,   project_name, phone, email, status)  values  <foreach collection="list" item="item" index="index" separator=",">    (#{item.userName,jdbcType=VARCHAR}, #{item.projectId,jdbcType=INTEGER},      #{item.projectName,jdbcType=VARCHAR}, #{item.phone,jdbcType=VARCHAR}, #{item.email,jdbcType=VARCHAR},      #{item.status,jdbcType=INTEGER})  </foreach></insert>

useGeneratedKeys:
设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。MySQL和SQLServer执行auto-generated key field,
因此当数据库设置好自增长主键后,可通过JDBC的getGeneratedKeys方法获取。但像Oralce等不支持auto-generated key field的数据库就不能用这种方法获取主键了
keyProperty:返回主键ID到Javabean的属性名称注意:我在这里做的批量插入,传入的是一个List集合,所以<foreach>的collection属性要写list,插入完成后会直接把主键ID放入你的Javabean中。最重要的是这种写法只能是Mybatis版本3.3.1以上,不然会报错。数据库要mysql(其他数据库没试过)