当有时我们插入一条数据时,由于id很可能是自动生成的,如果我们想要返回这条刚插入的id怎么办呢。
在mysql数据中我们可以在insert下添加一个selectKey用以指定返回的类型和值:
方法一:
<insert id="insert" parameterType="com.ncs.pojo.TbContentCategory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID() AS ID
</selectKey>
insert into tb_content_category (id, parent_id, name,
status, sort_order, is_parent,
created, updated)
values (#{id,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR},
#{status,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{isParent,jdbcType=BIT},
#{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP})
</insert>
其中resultType表示返回的类型。ID就是返回的刚插入的ID
方法二:
在mysql数据中我们可以在insert下添加 useGeneratedKeys="true" keyProperty="id"
<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.ncs.pojo.TbContentCategory">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
-->
insert into tb_content_category (id, parent_id, name,
status, sort_order, is_parent,
created, updated)
values (#{id,jdbcType=BIGINT}, #{parentId,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR},
#{status,jdbcType=INTEGER}, #{sortOrder,jdbcType=INTEGER}, #{isParent,jdbcType=BIT},
#{created,jdbcType=TIMESTAMP}, #{updated,jdbcType=TIMESTAMP})
</insert>
java代码获取id
TbContentCategory record = new TbContentCategory();
record.setParentId(parentId);
record.setName(name);
Date date = new Date();
record.setCreated(date);
record.setUpdated(date);
record.setStatus(1);
record.setSortOrder(1);
record.setIsParent(false);
TbContentCategoryMapper.insert(record);
//insert操作后,id被返回给record对象,我们可以直接获取
Long id = record.getId();