遇到了一个 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的时候才会有值。难道这个必须要在事务提交后
才能有值么? 这不科学吧???
各位前辈是否遇见过呢? 求大神解决啊啊。。