官方文档只这么说的:useGeneratedKeys该属性会告诉Mybatis使用JDBC的getGeneratedKeys方法来取出由数据(比如:像Mysql和Sql server这样数据库管理系统的自动递增字段)内部生成的主键。默认值:false。
<insert id="insertAttachmentOne" parameterType="com.bjdv.ccps.workorder.pojo.WoAttachment" useGeneratedKeys="true" keyProperty="attachId">
<selectKey keyProperty="attachId" resultType="java.lang.Long" order="BEFORE">
select WO_ATTACHMENT_SEQ.NEXTVAL as attachId from DUAL
</selectKey>
insert into WO_ATTACHMENT
<trim prefix="(" suffix=")" suffixOverrides="," >
ATTACH_ID,
<if test="staffId != null">
STAFF_ID,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
#{attachId},
<if test="staffId != null">
#{staffId,jdbcType=DECIMAL},
</if>
</trim>
</insert>
插入的id 会付给user实体的id字段,insert()的返回值是插入记录的条数
要配置之后 才能用user.getId()获得插入的主键
注意:keyProperty="attachId" 而不是keyProperty="id"!
当执行完insert()方法后,Mybatis会自动将返回的主键值赋值给属性attachId,因此你可以通过这个方法获得插入的主键值:
System.out.println(User.getAttachId());