記一次:泛微OA集成Mybatis后 insert/update執行成功,但未真正插入或修改數據

背景:通過Mybatis插入數據或更新數據,顯示插入/更新成功,查詢數據庫,發現并未插入成功、數據也沒更新成功。下面是Mapper文件

public interface TestOrmMapper {int insertByTest(@Param("requestId") Integer requestId, @Param("dataType") Integer dataType,@Param("roleKey") String roleKey, @Param("roleNameCn") String roleNameCn, @Param("roleNameEn") String roleNameEn);int updateById(@Param("id") Integer id, @Param("roleKey") String roleKey, @Param("roleNameCn") String roleNameCn, @Param("roleNameEn") String roleNameEn);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ecology.mapper.TestOrmMapper"><insert id="insertByTest">insert into plm_role_project_bak(requestId, data_type, role_key, role_name_cn, role_name_en)values(#{requestId}, #{dataType}, #{roleKey}, #{roleNameCn}, #{roleNameEn})</insert><update id="updateById">update plm_role_project_bak set role_key = #{roleKey}, role_name_cn = #{roleNameCn}, role_name_en = #{roleNameEn} where id = #{id}</update>
</mapper>

調用代碼塊:

Integer requestId = 2938939;
TestOrmMapper testMapper = sqlSession.getMapper(TestOrmMapper.class);
int test = testMapper.insertByTest(requestId, 11, "role_01", "角色中文名", "role_name");
LOGGER.info("======>>>Insert請求結果test:{}", test);String roleKey = "role_02";
String roleName = "角色中文名";
String roleEnName = "role_code";
int id = testMapper.updateById(1, roleKey, roleEnName, roleName);
LOGGER.info("======>>>Update請求結果id:{}", id);

控制臺執行的日志:

通過日志可看insert、update返回都是執行成功;但是數據庫中的數據還是沒有任何修改

本地調試一下,可以通過日志看到原因:插入的語句回滾連接數據庫了,導致插入失敗。

?這種情況下,我們可以使用 sqlSession.commit()手動執行提交事件,將數據提交到數據庫中

//手動執行提交事件,將數據提交到數據庫中,才真正成功插入到數據庫中
sqlSession.commit();

或者我們在使用sqlSessionFactory.openSession()時候,將openSession( )的值設為?true 自動提交

 SqlSession sqlSession = sqlSessionFactory.openSession(true);

看DefaultSqlSessionFactory源碼,可以看到提供了兩個openSession方法

使用無參的方法時,需要配合commit使用,不然不會提交,導致數據操作回滾而失敗

解決方式:

  • 將?openSession( )的值設為?true
SqlSession sqlSession = sqlSessionFactory.openSession(true);
  • ?配合commit使用
SqlSession sqlSession = sqlSessionFactory.openSession();Integer requestId = 2938939;
TestOrmMapper testMapper = sqlSession.getMapper(TestOrmMapper.class);
int test = testMapper.insertByTest(requestId, 11, "role_01", "角色中文名", "role_name");
sqlSession.commit();//手動執行提交事件,將數據提交到數據庫中,才真正成功插入到數據庫中
LOGGER.info("======>>>Insert請求結果test:{}", test);String roleKey = "role_02";
String roleName = "角色中文名";
String roleEnName = "role_code";
int id = testMapper.updateById(1, roleKey, roleEnName, roleName);
sqlSession.commit();//手動執行提交事件,將數據提交到數據庫中,才真正成功插入到數據庫中
LOGGER.info("======>>>Update請求結果id:{}", id);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71373.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71373.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71373.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 Spring Boot 實現前后端分離的海康威視 SDK 視頻監控

使用 Spring Boot 實現前后端分離的海康威視 SDK 視頻監控系統&#xff0c;可以分為以下幾個步驟&#xff1a; 1. 系統架構設計 前端&#xff1a;使用 Vue.js、React 或 Angular 等前端框架實現用戶界面。后端&#xff1a;使用 Spring Boot 提供 RESTful API&#xff0c;負責與…

【大模型系列篇】國產開源大模型DeepSeek-V3技術報告解析

DeepSeek-V3技術報告 目錄 DeepSeek-V3技術報告 1. 摘要 2. 引言 3. DeepSeek V3 架構 3.1 基礎架構 3.1.1. 多頭潛在注意力 3.1.2. DeepSeekMoE和無輔助損失的負載均衡 3.2 多令牌預測 4. 基礎設施 4.1 計算集群 4.2 訓練框架 4.2.1. DualPipe算法與計算通信協同優…

負載均衡 - 一致性hash算法

構建場景 假如我們有三臺緩存服務器編號node0、node1、node2&#xff0c;現在有3000萬個key&#xff0c;希望可以將這些個key均勻的緩存到三臺機器上&#xff0c;你會想到什么方案呢&#xff1f; 我們可能首先想到的方案&#xff0c;是取模算法hash&#xff08;key&#xff0…

pdfplumber 解析 PDF 表格的原理

&#x1f4cc; pdfplumber 解析 PDF 表格的原理 pdfplumber 處理表格的原理是基于幾何分析&#xff08;geometric analysis&#xff09;&#xff0c;它通過分析 PDF 頁面中的線條、單元格間距和文本分布&#xff0c;提取表格數據。它主要利用 垂直線&#xff08;vertical line…

洛谷P1334

題目如下 思路&#xff1a; 每次選擇最短的兩塊木板進行合并&#xff0c;直到只剩下一塊木板。使用最小堆&#xff08;優先隊列&#xff09;來實現這一過程。使用最小堆&#xff1a; 將所有木板的長度放入最小堆&#xff08;優先隊列&#xff09; 每次從堆中取出兩塊最短的木…

JVM(Java Virtual Machine,Java 虛擬機)的作用

JVM&#xff08;Java Virtual Machine&#xff0c;Java 虛擬機&#xff09;的作用至關重要&#xff0c;它是 Java 語言“一次編寫&#xff0c;到處運行”&#xff08;Write Once, Run Anywhere&#xff0c;WORA&#xff09;特性的基石&#xff0c;也是 Java 平臺的核心組成部分…

總結(尚硅谷Vue3入門到實戰,最新版vue3+TypeScript前端開發教程)

1.Vue簡介 2020年9月18日&#xff0c;Vue.js發布版3.0版本&#xff0c;代號&#xff1a;One Piece 1.1.性能的提升 打包大小減少41%。 初次渲染快55%, 更新渲染快133%。 內存減少54%。 1.2.源碼的升級 使用Proxy代替defineProperty實現響應式。 重寫虛擬DOM的實現和Tree-Shak…

SolidWorks 轉 PDF3D 技術詳解

在現代工程設計與制造流程中&#xff0c;不同軟件間的數據交互與格式轉換至關重要。將 SolidWorks 模型轉換為 PDF3D 格式&#xff0c;能有效解決模型展示、數據共享以及跨平臺協作等問題。本文將深入探討 SolidWorks 轉 PDF3D 的技術原理、操作流程及相關注意事項&#xff0c;…

【深度學習CV】【圖像分類】從CNN(卷積神經網絡)、ResNet遷移學習到GPU高效訓練優化【案例代碼】詳解

摘要 本文分類使用的是resNet34,什么不用yolo v8&#xff0c;yolo v10系列,雖然他們也可以分類&#xff0c;因為yolo系列模型不純粹&#xff0c;里面包含了目標檢測的架構&#xff0c;所以分類使用的是resNet 本文詳細介紹了三種不同的方法來訓練卷積神經網絡進行 CIFAR-10 圖…

OPPO Find N5折疊手機:創新與實用的完美融合,FPC應用展現科技魅力【新立電子】

OPPO Find N5作為2025年新出世的折疊手機&#xff0c;以其卓越的設計、強大的性能以及創新的技術&#xff0c;為消費者帶來了全新的使用體驗。FPC&#xff08;柔性電路板&#xff09;在其中的運用&#xff0c;也進一步提升了手機的整體性能和用戶體驗。 OPPO Find N5的最大亮點…

【AD】PCB增加相關圖層——以機械層為例

問題&#xff1a;圖中PCB僅有機械層1和機械層2&#xff0c;想要在加一個機械層3 解決 1.點擊視圖—面板—View Configuration&#xff0c;選中機械層右鍵單擊增加層&#xff0c;其他層類似

Qt5 C++ QMap使用總結

文章目錄 功能解釋代碼使用案例代碼解釋注意事項代碼例子參考 功能解釋 QList<T> QMap::values() const Returns a list containing all the values in the map, in ascending order of their keys. If a key is associated with multiple values, all of its values wi…

測試用例總結

一、通用測試用例八要素   1、用例編號&#xff1b;    2、測試項目&#xff1b;   3、測試標題&#xff1b; 4、重要級別&#xff1b;    5、預置條件&#xff1b;    6、測試輸入&#xff1b;    7、操作步驟&#xff1b;    8、預期輸出 二、具體分析通…

不用寫代碼,批量下載今日頭條文章導出excel和pdf

前幾天有人問我怎么批量抓取今日頭條某個號的所有文章數據&#xff0c;需要文章鏈接&#xff0c;標題和時間&#xff0c;但是不會寫代碼&#xff0c;于是我寫了個簡單的教程 這里以渤海小吏為例 首先用edge瀏覽器安裝web-scraper瀏覽器擴展 然后打開瀏覽器控制臺&#xff0c;找…

Starrocks 寫入報錯 primary key memory usage exceeds the limit

背景 本文基于 StarRocks 3.3.5 單個Starrocks BE配置是 16CU 32GB 在Flink Yaml CDC 任務往 Starrocks寫數據的過程中&#xff0c;突然遇到了primary key memory usage exceeds the limit 問題&#xff0c;具體如下&#xff1a; java.lang.RuntimeException: com.starrocks.…

Django:文件上傳時報錯in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.

即&#xff1a;使用Content-Security-Policy 1.安裝Django CSP中間件&#xff1a; pip install django-csp 2.更改項目配置&#xff1a; # settings.py MIDDLEWARE [...csp.middleware.CSPMiddleware,... ]CSP_DEFAULT_SRC ("self",) CSP_FRAME_ANCESTORS (&q…

利用Adobe Acrobat 實現PPT中圖片分辨率的提升

1. 下載適用于 Windows 的 64 位 Acrobat 注冊方式參考&#xff1a;https://ca.whu.edu.cn/knowledge.html?type1 2. 將ppt中需要提高分辨率的圖片復制粘貼到新建的pptx問價中&#xff0c;然后執行“文件—>導出---->創建PDF、XPS文檔” 3. 我們會發現保存下來的distrib…

【Python爬蟲】爬取公共交通路網數據

程序來自于Github&#xff0c;以下這篇博客作為完整的學習記錄&#xff0c;也callback上一篇爬取公共交通站點的博文。 Bardbo/get_bus_lines_and_stations_data_from_gaode: 這個項目是基于高德開放平臺和公交網獲取公交線路及站點數據&#xff0c;并生成shp文件&#xff0c;…

Stable Diffusion模型高清算法模型類詳解

Stable Diffusion模型高清算法模型類詳細對比表 模型名稱核心原理適用場景參數建議顯存消耗細節增強度優缺點4x-UltraSharp殘差密集塊(RDB)結構優化紋理生成真實人像/建筑攝影重繪幅度0.3-0.4&#xff0c;分塊尺寸768px★★★★★☆皮膚紋理細膩&#xff0c;但高對比場景易出現…

VUE_使用Vite構建vue項目

創建項目 // 安裝vite npm install vite// 創建名為vite-app的項目 npm create vite vite-app --template vue// 到項目目錄 cd vite-app// 安裝依賴 npm install// 運行項目 npm run dev// 打包 npm run build// 打包預覽 npm run serve 增加路由 // 安裝路由 npm add vue-r…