Mybatis執行Update返回行數為負數
阿新 • • 發佈:2019-01-31
獲取mybatis的update行數,總是返回負數。後來在官網上找到原因,是由於defaultExecutorType的引起的,defaultExecutorType有三個執行器SIMPLE、REUSE和BATCH。其中BATCH可以批量更新操作快取SQL以提高效能,但是有個缺陷就是無法獲取update、delete返回的行數。defaultExecutorType的預設執行器是SIMPLE。
名稱 | 描述 |
---|---|
SIMPLE | 執行器執行其它語句 |
REUSE | 可能重複使用prepared statements 語句 |
BATCH | 可以重複執行語句和批量更新 |
由於專案配置中啟用了BATCH執行器,UPDATE和DELETE返回的行數就丟失了,把執行器改為SIMPLE即可。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 全域性對映器啟用快取 -->
<setting name="cacheEnabled" value="true" />
<!-- 查詢時,關閉關聯物件即時載入以提高效能 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 設定關聯物件載入的形態,此處為按需載入欄位(載入欄位由SQL指 定),不會載入關聯表的所有欄位,以提高效能 -->
<setting name="aggressiveLazyLoading" value="false" />
<!-- 對於未知的SQL查詢,允許返回不同的結果集以達到通用的效果 -->
<setting name="multipleResultSetsEnabled" value="true" />
<!-- 允許使用列標籤代替列名 -->
<setting name="useColumnLabel" value="true" />
<!-- 允許使用自定義的主鍵值(比如由程式生成的UUID 32位編碼作為鍵值),資料表的PK生成策略將被覆蓋 -->
<setting name="useGeneratedKeys" value="true" />
<!-- 給予被巢狀的resultMap以欄位-屬性的對映支援 -->
<setting name="autoMappingBehavior" value="FULL" />
<!-- 對於批量更新操作快取SQL以提高效能 -->
<!-- defaultExecutorType設定為BATCH有個缺陷就是無法獲取update、delete返回的行數 -->
<!-- <setting name="defaultExecutorType" value="BATCH" />-->
<!-- 資料庫超過25000秒仍未響應則超時 -->
<setting name="defaultStatementTimeout" value="25000" />
<!-- 日誌 -->
<!-- <setting name="logImpl" value="SLF4J"/> -->
</settings>
<!-- 註冊mybatis外掛 -->
<plugins>
<!-- mysql分頁外掛 -->
<plugin interceptor="com.rvho.mybatis.interceptor.MybatisPageInterceptor">
<property name="databaseType" value="mysql"/>
</plugin>
</plugins>
</configuration>