<insert id="addProduct" parameterMap="parameterProductMap">
<!-- 獲取剛插入的product的自動生成的主鍵id;(用來插入food表的product_id)-->
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID() AS ID
</selectKey>
insert into product (product_name,description,add_time
,fixed_price,dangqian_price,keywords,product_pic)
values(#{product_name},#{description},#{add_time},#{fixed_price},#{dangqian_price},#{keywords},#{product_pic})
</insert>
其中
keyProperty爲實體類pojo中id對應的屬性名;
resultType爲屬性的數據類型;
order="AFTER"表示在插入語句結束後返回該id值,BEFORE爲在插入之前獲取id值,一般用AFTER,因爲有可能插入時發生異常,導致數據沒有插進去,如果先獲取id的話,有可能導致業務邏輯出錯.
方法二:
<!--插入program -->
<insert id="addLedProgram" parameterType="LedProgram" useGeneratedKeys="true" keyProperty="p_id">
insert into ledProgram
(u_id,p_name,p_info,p_state,p_ip,p_width,p_height,p_colourType)
values
(#{u_id},#{p_name},#{p_info},#{p_state},#{p_ip},#{p_width},#{p_height},#{p_colourType})
</insert>
其中:useGeneratedKeys="true" 表示使用數據庫的主鍵自增長機制
keyProperty="p_id" 表示把數據庫自動生成的主鍵值賦值給實體類的p_id屬性