當前位置:
首頁 > 知識 > 框架學習系列 mybatis 第八篇 dao開發的方式

框架學習系列 mybatis 第八篇 dao開發的方式

本節主要內容

1:原生dao的開發方式

2:總結&下節預告

本文是《凱哥陪你學系列-框架學習之mybatis框架學習》中第八篇 mybatis開發dao的方式

聲明:本文系凱哥Java(www.kai)原創。轉載請註明出處

mybatis開發dao的方式有兩種

1:原始dao的開發方式

2:Mapper代理的開發方式。

本文中,咱們先講解原始的dao開發方式。

一:原始dao的開發方式

1.1:什麼是原始dao的開發方式?

其實就是咱們正常開發方式,即開發dao介面和dao實現類。

1.2:需求

:根據用戶id查詢用戶信息

:根據用戶名稱模糊查詢用戶列表

:添加用戶

1.3:dao介面類開發

1.4:dao實現類開發:

1.4.1:創建實現類

1.4.2:問題思考

1:在入門程序開發中我們知道,想要使用mybatis,必須要有sqlsession才可以

而sqlsession又是有sqlsessionFactory創建的。那麼我們還是像入門程序那有,每個方法都創建一個

sqlsessionFactory嗎?

2:如果不是,那麼這個sqlsessionfactory又該如何創建呢?

3:sqlsession可以作為成員變數/單例嗎?

1.4.3:問題分析

1:selSessionFactory,它的生命周期,應該是整個應用的範圍內。全局範圍內只需要有一個工廠就可以,使用單例模式來實現這個功能。(註:在本例中不處理。等以後與spring集成之後,有spring來對其進行單例管理)

2:通過1的分析我們知道sqlSessionFactory是全局的,如何獲取呢?

我們知道獲取一個對象的實例有多種方式

new 關鍵字new出一個對象;構造器注入等。在這裡我們就使用構造器注入方式

3:我們知道session是一次會話的,裡面有內容的。所以sqlSession,它內部含有一塊數據區域的。

存在線程不安全的問題,所以應該將sqlSession放到方法內部。而不是成員(全局)變數或者是單例來

1.4.5:代碼開發

通過構造器方式把sqlsessionFactory注入給userDaoImpl對象

根據id獲取

模糊查詢:

插入數據:

1.4.6 測試代碼開發

通過befor註解先初始化sqlSessionFactory對象

before註解的源碼介紹

測試根據用戶id進行查詢的代碼:

通過junit測試結果:

其實兩個方法自己完成測試。

1.4.7:問題思考

本文中的代碼量相對於入門程序代碼來說優化了很多。那麼還有沒有不足的地方?

當然有。

1:存在大量的重複模板代碼

2:存在硬編碼(String resource = "SqlMapConfig.xml";)寫死在代碼中

二:總結&下節預告

通過本文學習我們需要掌握的

1:回顧介面/實現類開發模式

2:回去獲取一個對象的實例方式之一 ----通過構造器注入

3:了解junit的@befor主鍵

下節預告:下節我們通過mapper代理的方式來解決以上問題

相關源碼:

【代碼】框架學習系列 mybatis 第八篇 mybatis開發dao的方式

框架學習系列 mybatis 第七篇 插入資料庫後返回主鍵

框架學習系列 mybatis 第六篇 入門程序之插入數據1

框架學習系列 mybatis第五篇入門程序根據用戶名模糊查詢

框架學習系列 mybatis 第四篇 入門程序之需求開發1

框架學習系列 mybatis 第三篇入門程序之工程項目的搭建

框架學習系列 mybatis第二篇 mybatis的工作原理

框架學習系列 mybatis 第一篇 原生jdbc連接分析

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 凱哥java 的精彩文章:

框架學習系列 mybatis 第七篇 插入資料庫後返回主鍵
框架學習系列 mybatis 第六篇 入門程序之插入數據1
框架學習系列 mybatis 第四篇 入門程序之需求開發1
框架學習系列 mybatis第五篇入門程序根據用戶名模糊查詢
框架學習系列 mybatis第二篇 mybatis的工作原理

TAG:凱哥java |

您可能感興趣

Karpathy更新深度學習開源框架排名:TensorFlow第一,PyTorch第二
原創:用python web框架 bottle 開發網站一
python 框架flask學習心得
mybatis框架的動態sql語句
淺談Metasploit框架中的Payload
學界 | Wasserstein is all you need:構建無監督表示的統一框架
PowerShell Empire 框架停止開發!
《Tensorflow:實戰Google深度學習框架》
第55期:Python機器學習實踐指南、Tensorflow 實戰Google深度學習框架
Angular.js 發布,Web 前端框架
Wasserstein is all you need:構建無監督表示的統一框架
Facebook開源 時間序列預測框架 Prophet
Altova跨平台移動應用框架MobileTogether發新版
使用node.js的開發框架express創建一個web應用
Python爬蟲框架之pyspider
Angular 6 正式發布:統一框架、Material和CLI 三大模塊
Facebook旗下Oculus VR團隊開源了DeepFocus框架
圍觀丨Google 的 Mobile UI 框架 Flutter Preview 1 發布!
django框架:HttpResponse對象
阿里首次開源深度學習框架X-Deep Learning