<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属性