日期:2014-05-17  浏览次数:20937 次

ibatis sqlmap 插入数据返回数据id问题
	<!-- 插入新话题  返回数据id  -->
<insert id="inserttopic" parameterType="map">
insert into topic (
TITLE,
<if test="FOREIGN_KEY != null and FOREIGN_KEY != ''">FOREIGN_KEY,</if>
CREATE_TIME
)values(
#{TITLE},
<if test="FOREIGN_KEY != null and FOREIGN_KEY != ''">#{FOREIGN_KEY},</if>
now()
)
    <selectKey resultType="long" keyProperty="ID" > 
             SELECT @@IDENTITY AS ID
        </selectKey>
    </insert> 

在google上了解到这样可以返回插入数据的id  但是我在测试过程中返回的结果是1  数据插入成功了,并没有返回自增的主键id  不知道什么原因  求教高手,,急,,在线等,谢谢了。
  mysql数据库    topic 表主键ID为自增长。
------解决方案--------------------
Google到什么你都敢往里粘,那个SQL是SQLServer的。


MySQL:

<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="id">

   SELECT LAST_INSERT_ID()

</selectKey>
------解决方案--------------------
<selectKey resultType="long" keyProperty="ID" order="AFTER"> 
   ……
</selectKey>
你没有加order属性,所以是先执行返回id的语句,后执行insert语句,永远都是1(插入一行,所以返回1)
------解决方案--------------------
引用:
<selectKey resultType="long" keyProperty="ID" order="AFTER"> 
   ……
</selectKey>
你没有加order属性,所以是先执行返回id的语句,后执行insert语句,永远都是1(插入一行,所以返回1)


这个倒是,平常都是序列肯定写在前面的! 
------解决方案--------------------
引用:
引用:
<selectKey resultType="long" keyProperty="ID" order="AFTER"> 
   ……
</selectKey>
你没有加order属性,所以是先执行返回id的语句,后执行insert语句,永远都是1(插入一行,所以返回1)

这个倒是,平常都是序列肯定写在前面的!
+1