版权声明:本文为博主原创文章,版权归博主所有。如转载,请注明出处! 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.1。
2、在mapper.java中不能使用@param注解。
3、Mapper.xml中使用list变量接受Dao中的集合。
同时回复中sunny用户提到:
当mysql的id增长步长不为1的时候,返回的主键是错误的