springMVC+mybatis 增删改操作后判断影响行数一直返回-2147482646

MyBatis发现更新和插入返回值一直为"-2147482646"的错误是由defaultExecutorType设置引起的,如果设置为BATCH,更新返回值就会丢失。mybatis官方的讨论列表,这句很关键:“If the BATCH executor is in use, the update counts are being lost. ”


spring/mybtis 配置文件

<!-- 配置扫描器,将mybatis接口的实现加入到ioc容器中 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 扫描所有dao接口的实现,加入到IOC容器中 -->
		<property name="basePackage" value="com.sevenisland.dao"></property>
	</bean>

	<!-- 配置可以执行批量的sqlSession -->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
		<constructor-arg name="executorType" value="BATCH"></constructor-arg>
	</bean>
	<!-- Spring配置文件的核心点(数据源/与mybatis整合/事务控制) -->
<!-- 开启基于注解的事务,使用xml配置形式的事务(主要都是使用配置式) -->
	<!-- 事务控制的配置 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<!-- 控制数据源 -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>

在mybatis里面有一个配置属性defaultExecutorType,当这个值为BATCH时, 返回结果就只有-2147482646 这一个值。defaultExecutorType一共有三个值:BATCH, REUSE, SIMPLE。这三个值分别的特点如下:

名称         描述
SIMPLE     执行器执行其它语句,默认值。
REUSE     可能重复使用prepared statements 语句
BATCH     可以重复执行语句和批量更新    

而解决以上问题的方法就是可以将defaultExecutorType的值改成SIMPLE或REUSE,或者直接删除该配置就可以了。

就是因为上面设置了 <constructor-arg name="executorType" value="BATCH"></constructor-arg> 这句引起的。去掉即可。

<constructor-arg name="executorType" value="BATCH"></constructor-arg>这是设置如此是想要进行批量操作,但是经测试没有此处的设置也可进行批量操作。大胆果断的删除即可。


参考地址:http://www.cnblogs.com/parryyang/p/5484459.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值