框架學習系列 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連接分析
※框架學習系列 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