MyBatis 3的Bug

MyBatis 3的Bug

作者:chszs

转载请注明出处!

版本:MyBatis 3.0.4
Bug为:插入语句不能正确返回自增字段的值。

MySQL数据库脚本:
CREATE TABLE `worker` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pin` varchar(64) DEFAULT NULL,
  `firstname` varchar(64) DEFAULT NULL,
  `lastname` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
对应的sqlmap映射
<insert id="addWorker" parameterType="Worker" useGeneratedKeys="true" keyProperty="id">
  	<selectKey resultType="int" keyProperty="id" order="AFTER"> 
		select LAST_INSERT_ID() as value
	</selectKey>
	insert into worker (pin, firstname, lastname) 
  values (#{pin}, #{firstname}, #{firstname}) 
</insert> 
对应的实体类Worker.java、DAO、接口、配置等通通省略......
执行的结果是只能返回1,得不到真正想要的自增字段的值。
————————————————
目前对此Bug的替代性的解决方法是:
专门为取ID进行配置:
<select id="getWorkerId" resultType="int" >
select LAST_INSERT_ID()
</select>
相当于执行了两条SQL语句才取得所需的ID值。[e01]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值