mybatis框架
共四天
第一天:mybatis入門
mybatis的概述
mybatis的環境搭建
mybatis入門案例
自定義mybatis框架(主要的目的是爲了讓大家瞭解mybatis中執行細節)
第二天:mybatis基本使用
mybatis的單表crud操作
mybatis的參數和返回值
mybatis的dao編寫
mybatis配置的細節
幾個標籤的使用
第三天:mybatis的深入和多表
mybatis的連接池
mybatis的事務控制及設計的方法
mybatis的多表查詢
一對多(多對一)
多對多
第四天:mybatis的緩存和註解開發
mybatis中的加載時機(查詢的時機)
mybatis中的一級緩存和二級緩存
mybatis的註解開發
單表CRUD
多表查詢
1、什麼是框架?
它是我們軟件開發中的一套解決方案,不同的框架解決的是不同的問題。
使用框架的好處:
框架封裝了很多的細節,使開發者可以使用極簡的方式實現功能。大大提高開發效率。
2、三層架構
表現層:
是用於展示數據的
業務層:
是處理業務需求
持久層:
是和數據庫交互的
3、持久層技術解決方案
JDBC技術:
Connection
PreparedStatement
ResultSet
Spring的JdbcTemplate:
Spring中對jdbc的簡單封裝
Apache的DBUtils:
它和Spring的JdbcTemplate很像,也是對Jdbc的簡單封裝
以上這些都不是框架
JDBC是規範
Spring的JdbcTemplate和Apache的DBUtils都只是工具類
4、mybatis的概述
mybatis是一個持久層框架,用java編寫的。
它封裝了jdbc操作的很多細節,使開發者只需要關注sql語句本身,而無需關注註冊驅動,創建連接等繁雜過程
它使用了ORM思想實現了結果集的封裝。
ORM:
Object Relational Mappging 對象關係映射
簡單的說:
就是把數據庫表和實體類及實體類的屬性對應起來
讓我們可以操作實體類就實現操作數據庫表。
user User
id userId
user_name userName
今天我們需要做到
實體類中的屬性和數據庫表的字段名稱保持一致。
user User
id id
user_name user_name
5、mybatis的入門
mybatis的環境搭建
第一步:創建maven工程並導入座標
第二步:創建實體類和dao的接口
第三步:創建Mybatis的主配置文件
SqlMapConifg.xml
第四步:創建映射配置文件
IUserDao.xml
環境搭建的注意事項:
第一個:創建IUserDao.xml 和 IUserDao.java時名稱是爲了和我們之前的知識保持一致。
在Mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一樣的
第二個:在idea中創建目錄的時候,它和包是不一樣的
包在創建時:com.itheima.dao它是三級結構
目錄在創建時:com.itheima.dao是一級目錄
第三個:mybatis的映射配置文件位置必須和dao接口的包結構相同
第四個:映射配置文件的mapper標籤namespace屬性的取值必須是dao接口的全限定類名
第五個:映射配置文件的操作配置(select),id屬性的取值必須是dao接口的方法名
當我們遵從了第三,四,五點之後,我們在開發中就無須再寫dao的實現類。
mybatis的入門案例
第一步:讀取配置文件
第二步:創建SqlSessionFactory工廠
第三步:創建SqlSession
第四步:創建Dao接口的代理對象
第五步:執行dao中的方法
第六步:釋放資源
注意事項:
不要忘記在映射配置中告知mybatis要封裝到哪個實體類中
配置的方式:指定實體類的全限定類名
mybatis基於註解的入門案例:
把IUserDao.xml移除,在dao接口的方法上使用@Select註解,並且指定SQL語句
同時需要在SqlMapConfig.xml中的mapper配置時,使用class屬性指定dao接口的全限定類名。
明確:
我們在實際開發中,都是越簡便越好,所以都是採用不寫dao實現類的方式。
不管使用XML還是註解配置。
但是Mybatis它是支持寫dao實現類的。
6、自定義Mybatis的分析:
mybatis在使用代理dao的方式實現增刪改查時做什麼事呢?
只有兩件事:
第一:創建代理對象
第二:在代理對象中調用selectList
自定義mybatis能通過入門案例看到類
class Resources
class SqlSessionFactoryBuilder
interface SqlSessionFactory
interface SqlSession