mybatis单条/批量插入返回自生成主键(列表)

版权声明:本文为博主原创文章,版权归博主所有。如转载,请注明出处! https://blog.csdn.net/javandroid/article/details/81416240

1.插入单条记录返回自增主键id(已验证)

在insert标签上加上useGeneratedKeys=”true” keyProperty=”id” keyColumn=”id”

<insert id="insert" parameterType="com.freedom.clothing.domain.Goods" useGeneratedKeys="true"
            keyProperty="id" keyColumn="id">
    insert into goods 
        (id, url,match_num, is_del, group_id,
        source_id, user_id, create_time, update_time)
    values 
        (#{id,jdbcType=INTEGER}, #{url,jdbcType=VARCHAR},
        #{matchNum,jdbcType=INTEGER}, #{isDel,jdbcType=BIT}, #{groupId,jdbcType=INTEGER},
        #{sourceId,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, #{now()}, #{now()})
</insert>

然后在程序中,通过传入的对象获取id。mybatis会将主键id封装的到传入的对象中。

    //goods对象一路传到了Mapper中
    public RestResult addGoods2Group(@RequestBody Goods goods) {
        goodsService.addGoods2Group(goods);

        //返回添加单品的id
        return RestResultGenerator.getSuccessResult(goods.getId());
    }

2.批量插入记录返回自增主键id列表(未验证)
知乎地址:mybatis 批量插入如何返回每个条记录的自生成主键?

回复中ZHANGCHUNYAN0518用户答案:

前提:
1、升级Mybatis版本到3.3.12、在mapper.java中不能使用@param注解。
3、Mapper.xml中使用list变量接受Dao中的集合。

同时回复中sunny用户提到:

当mysql的id增长步长不为1的时候,返回的主键是错误的

参考博客:
MyBatis—insert语句返回主键和selectKey标签

猜你喜欢

转载自blog.csdn.net/javandroid/article/details/81416240
今日推荐