论坛首页 Java企业应用论坛

关于 mybaits selectkey 事务下无法获取id的问题

浏览 4762 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-11-07  

遇到了一个 mybatis spring下 获取自增长id的问题,恳求大神指教;

mybaits 我使用的是org.mybatis.spring.mapper.MapperFactoryBean 这种方式直接使用了接口声明,没有dao层,如下,

<bean id="cmsChannelMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.xeon.xcms.mapper.cms.CmsChannelMapper"></property>
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
	</bean>

 之后,便在service 层直接调去了这个mapper 使用。

cmsChannelMapper.insertSelective(c);

 插入的mybatis隐射文件是:

 <insert id="insertSelective" parameterType="com.xeon.xcms.domain.cms.CmsChannel" >
    insert into cms_channel (...)value(....)

<selectKey order="AFTER" keyProperty="channelId" resultType="java.lang.Integer">
    	 SELECT LAST_INSERT_ID() 
    </selectKey>
</insert>

 但是经过我测试发现在service执行完插入操作后,此时get 主键值 是null,而在action 层在get的时候才会有值。难道这个必须要在事务提交后

才能有值么? 这不科学吧???

各位前辈是否遇见过呢? 求大神解决啊啊。。

   发表时间:2013-11-11   最后修改:2013-11-11
为什么不使用mybatis自带的useGeneratedKeys?
1 请登录后投票
   发表时间:2013-11-17  
<insert id="save" parameterType="XXX" useGeneratedKeys="true" keyProperty="id"></insert>
数据主键设置为自增长
0 请登录后投票
   发表时间:2014-01-12  
怀疑insert into cms_channel (...)value(....) 里没有ID列及#{channelId}
0 请登录后投票
论坛首页 Java企业应用版

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