MyBatis批量插入返回主键
2017-05-12 19:37
471 查看
用MyBatis进行批量插入时:
语句
<selectKey resultType="java.lang.Long" keyProperty="Id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
只适用于单条记录插入时返回主键到实体的id字段上
如果想要批量插入后返回所有主键到插入实体的id字段上, 需要在insert上加上useGeneratedKeys和keyProperty,如下所示:
<insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
</insert>
而且,这个insert里面不能再加上面的selectKey语句,否则还是全部不返回主键
网上有说采用useGeneratedKeys和keyProperty进行批量插入返回主键时,对应的Dao不能用@Param来给批量插入的list取别名
也就是说必须用成
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
</insert>
这可能是低版本的要求,至少我用myBatis 3.4.1版时,用@Param而省去parameterType="java.util.List"
也是一样能批量返回主键
语句
<selectKey resultType="java.lang.Long" keyProperty="Id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
只适用于单条记录插入时返回主键到实体的id字段上
如果想要批量插入后返回所有主键到插入实体的id字段上, 需要在insert上加上useGeneratedKeys和keyProperty,如下所示:
<insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
</insert>
而且,这个insert里面不能再加上面的selectKey语句,否则还是全部不返回主键
网上有说采用useGeneratedKeys和keyProperty进行批量插入返回主键时,对应的Dao不能用@Param来给批量插入的list取别名
也就是说必须用成
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
</insert>
这可能是低版本的要求,至少我用myBatis 3.4.1版时,用@Param而省去parameterType="java.util.List"
也是一样能批量返回主键
相关文章推荐
- Mybatis批量插入返回插入成功后的主键id
- Mybatis批量插入返回插入成功后的主键id
- mybatis批量插入数据返回主键
- Mybatis批量插入返回自增主键
- mybatis批量插入返回主键解决方案
- Mybatis批量插入返回插入成功后的主键id
- Mybatis批量插入返回自增主键(转)
- Mybatis批量插入返回自增主键
- Mybatis批量插入,返回插入成功后的主键id
- 插入数据返回插入的主键Id
- MyBatis批量插入主键回写
- Ibatis插入数据返回主键Id
- MyBatis+MySQL 返回插入的主键ID
- MyBatis插入后返回主键
- 2017.9.15 mybatis批量插入后实现主键回填
- JdbcTemplate下访问Oracle数据库插入数据时返回序列增长的主键
- 数据库插入数据返回当前主键ID值方法
- mybatis之 插入数据时 返回自增的主键ID
- SqlHelper.ExecuteScalar返回插入的记录的主键
- MyBatis 插入时返回自增主键