前言 :
今天写了一个新接口 ,需要执行insert操作后,返回主键id给前端,完成这个功能后突然想记录一下,以便以后使用,顺便也分享给大家。
解决方法我一共想出了两种:
1.根据useGeneratedKeys获取返回值,适用于mysql、sqlserver等数据库:
修改mapper.xml
<insert id="addOrder" parameterType="Order" useGeneratedKeys="true" keyProperty="id">
insert into ssm_order (order_message) values (#{orderMessage,jdbcType=VARCHAR})
</insert>
useGeneratedKeys="true" :设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。
keyProperty:赋值的对象的属性名称,我这里填的是id,表示将id返回到对象中
设置完以后,直接在对象中取值
Order order=new Order();
order.setOrderMessage("测试消息");
System.out.println(order.getId()+"取值前");
int num = orderService.addOrder(order);
System.out.println(order.getId()+"取值后");
2.根据selectkey获取
<insert id="addOrder" parameterType="Order">
insert into ssm_order (order_message) values (#{orderMessage,jdbcType=VARCHAR})
<selectKey keyProperty="id" resultType="java.lang.Integer">
select LAST_INSERT_ID() as id
</selectKey>
</insert>