当主键是自增的时候,我们是不能在添加记录的同时获取到自增的主键的值的。
我们自己定义实体类实例对应的主键属性一般是null或者不可用的(因为没插入之前你不可能知道数据库会给你生成什么样的主键)。
但是有的时候我们又必须要获取到,这个时候就需要在插入的语句中加上如下属性:
useGeneratedKeys="true" keyProperty="对应的主键的对象" keyColumn="对应数据库中的自增主键"
这样的话就会将主键的值写入到我们配置的keyProperty
<!-- 主要是在主键是自增的情况下,添加成功后可以直接使用主键值,其中keyProperty的值是对象的属性值不是数据库表中的字段名,keyColumn的值才是数据库中的自增的主键名-->
<insert id="addRecords" parameterType="WechatGoodsTypes" keyColumn="id" keyProperty="id" useGeneratedKeys="true">
insert into t_wechat_goods_types (`name`, pic, createtime, updatetime, show_status, order_num)
values (
#{name,jdbcType=VARCHAR},
#{pic,jdbcType=VARCHAR},
#{createtime,jdbcType=TIMESTAMP},
#{updatetime,jdbcType=TIMESTAMP},
#{showStatus,jdbcType=BIT},
#{orderNum,jdbcType=INTEGER}
)
</insert>
这样写的话就可以在后台直接获取到刚刚插入的记录的自增id值了:
wechatGoodsTypesService.addRecords(wechatGoodsTypes);
long wechatGoodsTypesId= wechatGoodsTypes.getId();