mybatis通过SCOPE_IDENTITY()获取insert语句的自增主键时(sqlserver)

来源:互联网 发布:秦美人浴池进阶数据 编辑:程序博客网 时间:2024/05/16 01:50

获取主键时返回的总是null

经过网上搜索资料,感觉

<selectKey keyProperty="companyUserId" order="AFTER" resultType="java.lang.Integer">      SELECT SCOPE_IDENTITY()    </selectKey>
是一个bug


而且是存在与mabatis框架下的bug


原因猜想

1、insert语句和select  scope_identity()不是同时执行,而是分开执行的

先执行insert语句,之后再发起一个sql执行select  scope_identity(),所以获取不了自增主键

2、insert语句和select scope_identity()处于同一个事务中,当跑insert之后跑select scope_identity()语句,由于处于事务中,事务并没提交,所以获取不了主键id


解决方法:

使用jdbc的useGeneratedKeys="true" keyProperty="companyUserId"属性

0 0
原创粉丝点击