使用背景
这几天在写秒杀项目,其中有一个需求是生成订单并返回订单号(主键)然后再生成秒杀订单将刚刚返回的订单号作为某个字段插入秒杀订单中,也就是秒杀订单表中的order_id。这其中就使用到了插入信息并返回主键。
我使用的是Mybatis逆向工程生成的Mapper文件,其中自动生成的insert方法返回的是影响的行数,我在使用的时候一直返回给我的是1,导致报错。
相关Mapper的编写
其中最关键的就是在insert标签上增加useGeneratedKeys和keyProperty
1 | <insert id="insertOrderAndReturnOrderId" useGeneratedKeys="true" keyProperty="id" parameterType="com.lgq.miaosha.domain.OrderInfo"> |
其中keyProperty=”id”,这个id就是传入对象中的某个属性值,比如说这里就是OrderInfo对象,执行成功之后就会自动将主键的值赋给对象中的id属性。然后原本作为参数的OrderInfo对象中的id就得到了更新,这时候我们再取这个对象的id字段就可以获取到主键的值了。
使用代码
1 | /** |