论坛首页 Java企业应用论坛

iBATIS selectKey 返回的主键总是0

浏览 7006 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-08-12   最后修改:2014-08-12
配置文件如下:
<insert id="MerchantCouponFlow.insertStore" parameterType="com.ddmap.pcugc.model.CouponStore"  useGeneratedKeys="true" keyProperty="id"  >
        <selectKey resultType="int"  keyProperty="id"   >
            <![CDATA[SELECT @@IDENTITY as id  ]]>
        </selectKey>
        <![CDATA[

        INSERT INTO mp_poi (
            city_No,
        	poi_name ,
        	poi_address ,
        	create_time,
        	is_valid
        ) VALUES (
            #{cityNo},
            #{brandName},
        	 #{storeAddress} ,
        	 #{createTime},
        	 #{isValid}
        )

    ]]>

    </insert>

 

   发表时间:2014-08-13  
把select标签下到insert语句后面
0 请登录后投票
   发表时间:2014-08-14  
给selectKey标签加个属性Order,这个应该是AFTER吧
0 请登录后投票
   发表时间:2014-08-14  
keyProperty是city_No,加order=before
0 请登录后投票
   发表时间:2014-08-15  
放后面,或者after
0 请登录后投票
   发表时间:2014-08-18   最后修改:2014-08-18
返回的是影响行数,传入的对象已经被修改了,获取CouponStore的Id看看。
可以参考官方文档
以下是oracle写法
<insert id="insert">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select seq_users.nextval from dual
</selectKey>
insert into users values (#{id}, #{name})
</insert>
0 请登录后投票
   发表时间:2014-08-19  
        <selectKey resultType="int"  keyProperty="id"   >  
            <![CDATA[SELECT @@IDENTITY as id  ]]>  
        </selectKey> 


这一段中定义 id,下面
        INSERT INTO mp_poi ( 
            city_No, 
            poi_name , 
            poi_address , 
            create_time, 
            is_valid 
        ) VALUES ( 
            #{cityNo}, 
            #{brandName}, 
             #{storeAddress} , 
             #{createTime}, 
             #{isValid} 
        ) 

中没有,你可以将 #{cityNo}换成#{id}试试,或者将上面一段修改为 as cityNo
0 请登录后投票
   发表时间:2015-04-13  
ibatis新特性:http://dwz.cn/GFa3A
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics