1. 程式人生 > >MyBatis-Generator插入刪除資料返回-2147482646

MyBatis-Generator插入刪除資料返回-2147482646

在使用MyBatis-Generator自動生成的程式碼進行刪除資料時( deleteByPrimaryKey 方法 )返回的int 值為 -2147482646 。正常的邏輯是成功刪除返回 1 ,失敗返回 0(未刪除資料) ,特意去官網看了這個方法的說明,發現沒有類似的說明(我沒看到…)。

以下為其他網友的解決方案,還果然是這一原因。。以下內容為轉載

MyBatis發現更新和插入返回值一直為"-2147482646"的錯誤是由defaultExecutorType設定引起的,如果設定為BATCH,更新返回值就會丟失。mybatis官方的討論列表,這句很關鍵:

“If the BATCH executor is in use, the update counts are being lost. ”

在我的springMVC和mybatis整合中設定瞭如下內容

<!-- 配置mapper介面 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="*****.dao" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory" />
    <constructor-arg index="1" value="BATCH" />
</bean>
<!-- 事務配置 -->
<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

就是因為上面設定了

<constructor-arg index="1" value="BATCH" />

這句引起的。去掉即可。

由於框架是別人搭建的,不知道此處的設定是何用意。

<constructor-arg index="1" value="BATCH" />這是設定如此是想要進行批量操作,但是經測試沒有此處的設定也可進行批量操作。大膽果斷的刪除即可。