1. 程式人生 > >mybatis單條/批量插入返回自生成主鍵(列表)

mybatis單條/批量插入返回自生成主鍵(列表)

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標籤