mybatis單條/批量插入返回自生成主鍵(列表)
阿新 • • 發佈:2018-11-19
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 .1。
2、在mapper.java中不能使用@param註解。
3、Mapper.xml中使用list變數接受Dao中的集合。
同時回覆中sunny使用者提到:
當mysql的id增長步長不為1的時候,返回的主鍵是錯誤的