MyBatis之測試添加功能

1.

首先Mybatis為我們提供了一個操作數據庫的會話對象叫Sqlsession,所以我們就需要先獲取sqlsession對象:

//加載核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//獲取sqlSessionFactoryBuilder(是我們提供sqlSession的一個工廠對象的一個構建對象)
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//獲取sqlSessionFactory(獲取sqlSession工廠對象)
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
//獲取sqlSession(獲取Mybatis為我們提供一個操作數據庫的會話對象)
SqlSession sqlSession = sqlSessionFactory.openSession();

補充:

- SqlSession:代表Java程序和數據庫之間的會話。(HttpSession是Java程序和瀏覽器之間的會話)

- SqlSessionFactory:是“生產”SqlSession的“工廠”

- 工廠模式:如果創建某一個對象,使用的過程基本固定,那么我們就可以把創建這個對象的相關代碼封裝到一個“工廠類”中,以后都使用這個工廠類來“生產”我們需要的對象

2.

然后通過SqlSession來實現我們當前Mybatis中的功能,再訪問一個sql語句 去執行sql語句來獲得一個結果。再者Mybatis是面向接口編程,我們調用mapper接口中的方法,它就會自動的匹配一個sql語句來執行,所以我們接下來獲取mapper接口的對象(一個接口我們想創建對象就需要實現類,但之前我們并沒有實現類)

傳進去的參數是類型的一個class對象,然后這個類型的泛型是T,而這個方法的返回值是我們當前的T對象,即當我們傳進去一個類型的class對象后,它會幫助我們獲取這個類型的實例化對象。

最后總結一下流程:

每當我們去調用mapper接口中的方法,

他就根據我們的mapper接口找到映射文件,

然后根據當前調用的方法找到我們的sql語句

增刪改受影響的是行數。當sql語句執行成功后,但在數據庫中沒有添加數據。

這里是(transactionManager)事務管理器,type=JDBC表示用u最原始的JDBC方式來管理事務,所以說現在事務的提交或者回滾都需要手動處理,即造成在數據庫中沒有添加數據。

補充:

優化1

優化2

通過日志功能來監測當前實現功能他所執行的sql。

增加修改數據功能

先在mapper接口寫好方法,然后通過方法去映射文件,再編寫好sql語句。

特殊的查詢功能

首先有返回值(一個對象或者一個對象的集合)

補充:

? 1. 查詢的標簽select必須設置屬性resultType或resultMap,用于設置實體類和數據庫表的映射關系 ?

? ? - resultType:自動映射,用于屬性名和表中字段名一致的情況 ?

? ? - resultMap:自定義映射,用于一對多或多對一或字段名和屬性名不一致的情況(自動的把我們當前查詢的結果的字段名來作為屬性名進行賦值,如果能匹配就賦值不能就不賦值)

? 2. 當查詢的數據為多條時,不能使用實體類作為返回值,只能使用集合,否則會拋出異常TooManyResultsException;但是若查詢的數據只有一條,可以使用實體類或集合作為返回值

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

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

相關文章

[論文閱讀] 人工智能+軟件工程 | MemFL:給大模型裝上“項目記憶”,讓軟件故障定位又快又準

【論文解讀】MemFL:給大模型裝上“項目記憶”,讓軟件故障定位又快又準 論文信息 arXiv:2506.03585 Improving LLM-Based Fault Localization with External Memory and Project Context Inseok Yeo, Duksan Ryu, Jongmoon Baik Subjects: Software Engi…

Java開發中復用公共SQL的方法

在一次Java后端開發的面試中,面試官問了我一個問題:“你在寫代碼時會復用公共SQL嗎?如果會的話,能詳細介紹一下你是如何實現的嗎?”這個問題讓我眼前一亮,因為在實際項目中,SQL復用確實是一個非…

C#學習26天:內存優化的幾種方法

1.減少對象創建 使用場景: 在循環或密集計算中頻繁創建對象時。涉及大量短生命周期對象的場景,比如日志記錄或字符串拼接。游戲開發中,需要頻繁更新對象狀態時。 說明: 重用對象可以降低內存分配和垃圾回收的開銷。使用對象池…

【opencv】基礎知識到進階(更新中)

安裝:pip install opencv-python 入門案例 讀取圖片 本節我們將來學習,如何使用opencv顯示一張圖片出來,我們首先需要掌握一條圖片讀取的api cv.imread("圖片路徑","讀取的方式") # 圖片路徑: 需要在工程目錄中,或者一個文件的絕對路徑 # 讀取…

【Part 3 Unity VR眼鏡端播放器開發與優化】第二節|VR眼鏡端的開發適配與交互設計

文章目錄 《VR 360全景視頻開發》專欄Part 3|Unity VR眼鏡端播放器開發與優化第一節|基于Unity的360全景視頻播放實現方案第二節|VR眼鏡端的開發適配與交互設計一、Unity XR開發環境與設備適配1.1 啟用XR Plugin Management1.2 配置OpenXR與平…

SQL進階之旅 Day 16:特定數據庫引擎高級特性

【SQL進階之旅 Day 16】特定數據庫引擎高級特性 開篇 在“SQL進階之旅”系列的第16天,我們將探討特定數據庫引擎的高級特性。這些特性通常為某些特定場景設計,能夠顯著提升查詢性能或簡化復雜任務。本篇文章將覆蓋MySQL、PostgreSQL和Oracle的核心高級…

c++算法學習4——廣度搜索bfs

一、引言:探索迷宮的智能方法 在解決迷宮最短路徑問題時,廣度優先搜索(BFS)是一種高效而優雅的算法。與深度優先搜索(DFS)不同,BFS采用"由近及遠"的搜索策略,逐層探索所有…

4.RV1126-OPENCV 圖像輪廓識別

一.圖像識別API 1.圖像識別作用 它常用于視覺任務、目標檢測、圖像分割等等。在 OPENCV 中通常使用 Canny 函數、findContours 函數、drawContours 函數結合在一起去做輪廓的形檢測。 2.常用的API findContours 函數:用于尋找圖片的輪廓,并把所有的數…

Qt多線程訪問同一個數據庫源碼分享(基于Sqlite實現)

Qt多線程訪問同一個數據庫源碼分享(基于Sqlite實現) 一、實現難點線程安全問題死鎖風險連接管理問題數據一致性性能瓶頸跨線程信號槽最佳實踐建議 二、源碼分享三、測試1、新建一個多線程類2、開啟多線程插入數據 一、實現難點 多線程環境下多個線程同時…

雙空間知識蒸餾用于大語言模型

Dual-Space Knowledge Distillation for Large Language Models 發表:EMNLP 2024 機構:Beijing Key Lab of Traffic Data Analysis and Mining 連接:https://aclanthology.org/2024.emnlp-main.1010.pdf 代碼:GitHub - songmz…

貪心算法應用:多重背包啟發式問題詳解

貪心算法應用:多重背包啟發式問題詳解 多重背包問題是經典的組合優化問題,也是貪心算法的重要應用場景。本文將全面深入地探討Java中如何利用貪心算法解決多重背包問題。 多重背包問題定義 **多重背包問題(Multiple Knapsack Problem)**是背包問題的變…

ES6 Promise 狀態機

狀態機:抽象的計算模型,根據特定的條件或者信號切換不同的狀態 一、Promise 是什么? 簡單來說,Promise 就是一個“承諾對象”。在ES6 里,有些代碼執行起來需要點時間,比如加載文件、等待網絡請求或者設置…

【Docker管理工具】部署Docker可視化管理面板Dpanel

【Docker管理工具】部署Docker可視化管理面板Dpanel 一、Dpanel介紹1.1 DPanel 簡介1.2 主要特點 二、本次實踐規劃2.1 本地環境規劃2.2 本次實踐介紹 三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本 四、下載Dpanel鏡像五、部署Dpanel…

最新研究揭示云端大語言模型防護機制的成效與缺陷

一項全面新研究揭露了主流云端大語言模型(LLM)平臺安全機制存在重大漏洞與不一致性,對當前人工智能安全基礎設施現狀敲響警鐘。該研究評估了三大領先生成式AI平臺的內容過濾和提示注入防御效果,揭示了安全措施在阻止有害內容生成與…

docker中,容器時間和宿機主機時間不一致問題

win11下的docker中有個mysql。今天發現插入數據的時間不正確。后來發現原來是docker容器中的時間不正確。于是嘗試了各種修改,什么run -e TZ"${tzutil /g}",TZ"Asia/Shanghai",還有初始化時帶--mysqld一類的,…

uniapp實現的簡約美觀的星級評分組件

采用 uniapp 實現的一款簡約美觀的星級評分模板,提供絲滑動畫效果,用戶可根據自身需求進行自定義修改、擴展,純CSS、HTML實現,支持web、H5、微信小程序(其他小程序請自行測試) 可到插件市場下載嘗試&#x…

go語言的鎖

本篇文章主要講鎖,主要會涉及go的sync.Mutex和sync.RWMutex。 一.鎖的概念和發展 1.1 鎖的概念 所謂的加鎖和解鎖其實就是指一個數據是否被占用了,通過Mutex內的一個狀態來表示。 例如,取 0 表示未加鎖,1 表示已加鎖&#xff…

Ubuntu 服務器軟件更新,以及常用軟件安裝 —— 一步一步配置 Ubuntu Server 的 NodeJS 服務器詳細實錄 3

前言 前面,我們已經 安裝好了 Ubuntu 服務器系統,并且 配置好了 ssh 免密登錄服務器 ,現在,我們要來進一步的設置服務器。 那么,本文,就是進行服務器的系統更新,以及常用軟件的安裝 調整 Ubu…

如何從零開始建設一個網站?

當你沒有建站的基礎和建站的知識,那么應該如何開展網站建設和網站管理。而今天的教程是不管你是為自己建站還是為他人建站都適合的。本教程會指導你如何進入建站,將建站的步驟給大家分解: 首先我們了解一下,建站需要那些步驟和流程…

網絡可靠性的定義與核心要素

網絡可靠性(Network Reliability)是指網絡系統在特定時間范圍內持續提供穩定、無中斷、符合預期性能的服務能力。其核心目標是確保數據能夠準確、完整、及時地傳輸,即使在部分故障或異常情況下仍能維持基本功能。 1. 網絡可靠性的核心指標 衡…