ssm框架 Mybatis獲取自增主鍵id
阿新 • • 發佈:2021-01-06
原以為新增完成後會自動返回新增的id,測試幾次後都是返回1。原來操作成功後返回的是受影響的行數而不是id。
在xml配置中Mybatis想要獲取自增的id主要有兩種方式
第一種
<!--
keyProperty="id" id為實體類對應的屬性,執行完成後自增id會賦值到此屬性
-->
<insert id="addGoods" keyProperty="id" useGeneratedKeys="true">
insert into sys_goods
</ insert>
第二種
<insert id="addGoods">
<!--
keyProperty="id" id為實體類對應的屬性,執行完成後自增id會賦值到此屬性
order="AFTER" 如果設定為 BEFORE,那麼它會首先選擇主鍵,設定 keyProperty 然後執行插入語句。如果設定為 AFTER,那麼先執行插入語句,然後是 selectKey 元素
-->
<selectKey resultType="java.lang.Integer" order ="AFTER" keyProperty="id">
select LAST_INSERT_ID()
</selectKey>
insert into sys_goods
</insert>
呼叫方式
Goods goods = new Goods();
//新增商品
gs.addGoods(goods);
//獲取自增id
goods.getId()
需要注意這兩種方式Mapper介面方法接收引數的地方都不要使用@Param
註解。
Integer addGoods(Goods goods); //可以正常獲取自增id
Integer addGoods (@Param("goods") Goods goods); //第一種方式會報引數錯誤,第二種方式不會報錯但一直為null