方法1:在insert标签中使用userGeneratedKeys和keyProperty标签:
<insert id=”insertname” usegeneratedkeys=”true” keyproperty=”id”> insert into names (name) values (#{name}) </insert>
useGeneratedKeys = true 表示开启自动生成主键的功能,keyProperty = "id" 指定了要将自动生成的主键值赋给 id 属性。插入操作完成后,通过访问 id 属性即可获取到自动生成的主键值。
方法2:使用select标签和keyProperty
数据库主键包括自增和非自增,有时候新增一条数据不仅仅知道成功就行了,后边的逻辑可能还需要这个新增的主键,这时候再查询数据库就有点耗时耗力,我们可以采用selectKey来帮助我们获取新增的主键
<insert id="insert" parameterType="com.example.wjtweb.pojo.Goods"> <selectKey keyProperty="id" order="AFTER" resultType="Integer"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO Goods (MID,GNAME,PRICE,AMOUNT,imageName) VALUES (#{mid},#{gname},#{price},#{amount},#{imageName}); </insert>
selectKey 元素包裹在了插入语句,并使用 keyProperty="id" 指定了要将自动生成的主键值赋给 id 属性。resultType="java.lang.Long" 指定了返回值的类型。通过执行 SELECT LAST_INSERT_ID() 语句来获取自动生成的主键值。order="AFTER" 表示 SELECT LASTINSERT ID() 在insert执行之后执行.