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]

posted on 2011-03-31 21:19  YangJin  阅读(256)  评论(0编辑  收藏  举报