mybatis由淺入深day01_5mybatis開發dao的方法(5.1SqlSession使用范圍_5.2原始dao開發方法)...

5?mybatis開發dao的方法

  5.1?SqlSession使用范圍

    5.1.1?SqlSessionFactoryBuilder

通過SqlSessionFactoryBuilder創建會話工廠SqlSessionFactory

SqlSessionFactoryBuilder當成一個工具類使用即可,不需要使用單例管理SqlSessionFactoryBuilder

在需要創建SqlSessionFactory時候,只需要new一次SqlSessionFactoryBuilder即可。

??

    5.1.2?SqlSessionFactory

通過SqlSessionFactory創建SqlSession,使用單例模式管理sqlSessionFactory(工廠一旦創建,使用一個實例)。

?

將來mybatis和spring整合后,使用單例模式管理sqlSessionFactory。

??

    5.1.3?SqlSession

SqlSession是一個面向用戶(程序員)的接口。

SqlSession中提供了很多操作數據庫的方法:如:selectOne(返回單個對象)、selectList(返回單個或多個對象)、。

?

SqlSession是線程不安全的,在SqlSesion實現類中除了有接口中的方法(操作數據庫的方法)還有數據域屬性。

struts中的action,接收參數需要在struts的類中通過成員變量定義來接收參數,如果用戶提交了username屬性,username就是一個數據域它放在成員變量里面就不可能用單例了,因為有可能多線程并發請求的話,每個線程共用了它們成員變量的值,這樣導致我們訪問沖突,所以說是不安全的,struts是多例管理的

?

SqlSession最佳應用場合在方法體內,定義成局部變量使用。

?

  5.2?原始dao開發方法(程序員需要寫dao接口和dao實現類)

    5.2.1?思路

程序員需要寫dao接口和dao實現類。

需要向dao實現類中注入SqlSessionFactory,在方法體內通過SqlSessionFactory創建SqlSession

?

    5.2.2?dao接口

??

    5.2.3?dao接口實現類

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import cn.itcast.mybatis.po.User;
/*** dao接口實現類* @author yejin*/
public class UserDaoImpl implements UserDao{//需要向dao實現類中注入SqlSessionFactory//這里通過構造方法注入private SqlSessionFactory sqlSessionFactory;public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {this.sqlSessionFactory = sqlSessionFactory;} @Overridepublic User findUserById(int id) {SqlSession sqlSession = sqlSessionFactory.openSession();User user = sqlSession.selectOne("test.findUserById", id);//釋放資源
        sqlSession.close();return user;}@Overridepublic void insertUser(User user) {SqlSession sqlSession = sqlSessionFactory.openSession();//執行插入操作sqlSession.insert("test.insertUser", user);//提交事務
        sqlSession.commit();//釋放資源
        sqlSession.close();}@Overridepublic void deleteUser(int id) {SqlSession sqlSession = sqlSessionFactory.openSession();//執行插入操作sqlSession.delete("test.deleteUser", id);//提交事務
        sqlSession.commit();//釋放資源
        sqlSession.close();}
}

??

    5.2.4?測試代碼:

?

    5.2.5?總結原始 dao開發問題

1、dao接口實現類方法中存在大量模板方法,設想能否將這些代碼提取出來,大大減輕程序員的工作量。

?

2、調用sqlsession方法時將statement的id硬編碼了

?

3、調用sqlsession方法時傳入的變量,由于sqlsession方法使用泛型,即使變量類型傳入錯誤,在編譯階段也不報錯,不利于程序員開發。

轉載于:https://www.cnblogs.com/justdoitba/p/8040340.html

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

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

相關文章

做?個?德地圖的 iOS / Android MAUI 控件(上)

點擊上方藍字關注我們(本文閱讀時間:10分鐘)Microsoft Build 2022 ?會上正式發布了 .NET MAUI , 對于 .NET 開發者可以? C# 完成跨平臺的前端應?開發。對?起 MAUI 的前身 Xamarin , MAUI 除了可以?傳統的原?開發模式外,還?持了 Blazor…

易康eCognition Developer 9.01安裝教程(附eCognition下載地址及中文教程)

eCognition是由德國Definiens Imaging公司2009年推出的智能化影像分析軟件,2010年被美國Trimble公司收購。eCognition是目前所有商用遙感軟件中第一個基于目標信息的遙感信息提取軟件,它采用決策專家系統支持的模糊分類算法,突破了傳統商業遙感軟件單純基于光譜信息進行影像…

[改善Java代碼]不要覆寫靜態方法

建議33: 不要覆寫靜態方法 我們知道在Java中可以通過覆寫(Override)來增強或減弱父類的方法和行為,但覆寫是針對非靜態方法(也叫做實例方法,只有生成實例才能調用的方法)的,不能針對…

C語言試題194之實現strcpy函數功能

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款刷算法、筆試、面經、拿大公司offer神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 實現st…

ArcGIS實驗教程——實驗四十三:ArcGIS柵格重分類(Reclass)案例詳解

文章目錄 一、重分類1. 新值替代2. 將值組合到一起3. 按相同等級對一組柵格的值進行重分類4. 將特定值設置為NoData 或者為 NoData像元設置某個值二、查找表三、分割四、使用表重分類五、使用ASCI文件重分類重分類就是對原有柵格像元值重新分類從而得到一組新值并輸出。重分類工…

[中文版] 可視化 CSS References 文檔

本文分享了我將可視化 CSS References 文檔翻譯成中文版的介紹,翻譯工作還在陸續進行中,供學習 CSS 參考。 1. 可視化 CSS References 文檔介紹 許多 CSS 的文檔都是屬性的介紹,而開源項目 css-reference 并沒有提供中文版,而當我…

對比 C# 聊聊 C++ 中幾類特殊成員函數

一:背景 在 C# 中要說類默認給我們定義的特殊成員函數,莫過于 構造函數,但在 C 中這樣的特殊函數高達 6 種,有必要整合一下聊一聊。二:特殊成員函數 1. 默認構造函數和 C# 一樣,很多書中都說,如…

Js 枚舉定義Layer Icon

layer的icon有7種樣式:1-7 [圖片來自:https://blog.csdn.net/beauxie/article/details/60959971] 有時候常常記不住 😣,不防自己定義一哈: var layerIcon {//無none: -1,//成功success: 1,//失敗error: 2,//提問、疑…

前端進階之路: 前端架構設計(2)-流程核心

可能很多人和我一樣, 首次聽到"前端架構"這個詞, 第一反應是: "前端還有架構這一說呢?" 在后端開發領域, 系統規劃和可擴展性非常關鍵, 因此架構師備受重視, 早在開發工作啟動之前, 他們就被邀請加入到項目中, 而且他們會跟客戶討論即將建成的平臺的架構要…

C語言試題195之實現strnchr函數功能

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 實現strnchr函數功能 函數名稱:在字符串中查找字符 函數原型:char *strnchr(cons…

8.2設備文件及磁盤分區

2019獨角獸企業重金招聘Python工程師標準>>> 概覽: 設備文件的創建 權限 設備名 類型 主設備號 次設備號 mknod [-m MODE] NAME type [MAJOR MINOR] 創建時,先查看是否存在設備號的沖突 零磁道零扇區是MBR:Maste…

【ArcGIS風暴】ArcGIS求一個矢量圖層中多個圖斑的“四至點”坐標案例教程

如圖所示,為ArcGIS軟件自帶的全球矢量數據,怎樣求取每個大洲(圖斑)的四至坐標(xmin、ymin、xmax、ymax)呢? 參考閱讀:【ArcGIS遇上Python】python批量獲取柵格數據四至(top,bottom,left,right)坐標代碼 文章目錄 1. 矢量數據加載2. 四至計算結果3. 四至計算過程1.…

一個關于導出excel模板的實例

1 首先jsp頁面 點擊模板下載&#xff0c;會自動下載模板&#xff45;&#xff58;&#xff43;&#xff45;&#xff4c;&#xff0c;效果如下 讓我們看源碼&#xff1a; &#xff11; &#xff4a;&#xff53;&#xff50;頁面 <div class"tab-pane" id"p…

騰訊視頻VIP會員,周卡特價9.5元!

今天給大家推薦特價充值騰訊視頻VIP會員的平臺——幻海優品&#xff0c;騰訊視頻在線直充&#xff0c;VIP會員實時生效&#xff01;騰訊視頻VIP會員特價充值周卡&#xff1a;原價12元&#xff0c;特價9.5元月卡&#xff1a;原價30元&#xff0c;特價22元季卡&#xff1a;原價68…

解決安裝SQL Server 2005開發版時,出現“SQL Server 服務無法啟動 ”點擊重試或取消的解決方法

問題描述&#xff1a; 安裝SQL Server 2005開發版時&#xff0c;提示SQL Server服務無法啟動&#xff0c;有關詳細信息&#xff0c;請參閱SQL Server聯機叢書中的主題如何查看SQL Server 2005安裝日志文件和手動啟動SQL Server&#xff0c;如下圖所示。 此時&#xff0c;如果點…

C語言試題196之實現strstr函數功能

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目: 實現strstr函數功能 C 庫函數 char *strstr(const char *haystack, const char *nee…

svnsync實現版本庫的同步備份

svnsync實現版本庫的同步備份 實驗環境&#xff1a;A&#xff0c;172.17.201.243&#xff08;主&#xff09;B&#xff0c;172.17.201.88&#xff08;備&#xff09;項目需求&#xff0c;生產環境要求svn服務器實現熱備機制&#xff0c;于是就想到了svn自帶的svnsync機制&#…

關于數據結構(二)

文章目錄[點擊展開](?)[] 一UI返回功能思路分析實現方法二當前正在CD技能接著上文<<關于數據結構(一)>>&#xff0c;關于數據結構&#xff0c;在實際的開發中或多或少都有涉及到&#xff0c;只是看自己平時沒有積累到。下面是我在項目中的幾個實例&#xff1a; 一…

JDBC 之 事務

1.概念&#xff1a;事務指邏輯上的一組操作&#xff0c;組成這組操作的各個單元&#xff0c;要么全部成功&#xff0c;要么全部不成功。 2.數據庫開啟事務的命令dtl&#xff1a; Start transaction開啟事務 Rollback回滾事務&#xff08;撤銷&#xff09; Commit提交事務 3.JDB…

[轉]后端程序員必備:書寫高質量SQL的30條建議

以下文章來源于撿田螺的小男孩 &#xff0c;作者撿田螺的小男孩 轉載&#xff1a;《后端程序員必備&#xff1a;書寫高質量SQL的30條建議》 前言 本文將結合實例demo&#xff0c;闡述30條有關于優化SQL的建議&#xff0c;多數是實際開發中總結出來的&#xff0c;希望對大家有…