1. 程式人生 > 其它 >ssm框架 Mybatis獲取自增主鍵id

ssm框架 Mybatis獲取自增主鍵id

技術標籤:javassm

原以為新增完成後會自動返回新增的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