mybatis框架
共四天
第一天:mybatis入門java
mybatis的概述 mybatis的環境搭建 mybatis入門案例 自定義mybatis框架(主要的目的是爲了讓你們瞭解mybatis中執行細節)
次日:mybatis基本使用sql
mybatis的單表crud操做 mybatis的參數和返回值 mybatis的dao編寫 mybatis配置的細節 幾個標籤的使用
第三天:mybatis的深刻和多表數據庫
mybatis的鏈接池 mybatis的事務控制及設計的方法 mybatis的多表查詢 一對多(多對一) 多對多
第四天:mybatis的緩存和註解開發緩存
mybatis中的加載時機(查詢的時機) mybatis中的一級緩存和二級緩存 mybatis的註解開發 單表CRUD 多表查詢
一、什麼是框架?mybatis
它是咱們軟件開發中的一套解決方案,不一樣的框架解決的是不一樣的問題。 使用框架的好處: 框架封裝了不少的細節,使開發者可使用極簡的方式實現功能。大大提升開發效率。
二、三層架構架構
表現層: 是用於展現數據的 業務層: 是處理業務需求 持久層: 是和數據庫交互的
三、持久層技術解決方案app
JDBC技術: Connection PreparedStatement ResultSet Spring的JdbcTemplate: Spring中對jdbc的簡單封裝 Apache的DBUtils: 它和Spring的JdbcTemplate很像,也是對Jdbc的簡單封裝 以上這些都不是框架 JDBC是規範 Spring的JdbcTemplate和Apache的DBUtils都只是工具類
四、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
五、mybatis的入門maven
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實現類的。
六、自定義Mybatis的分析:ide
mybatis在使用代理dao的方式實現增刪改查時作什麼事呢? 只有兩件事: 第一:建立代理對象 第二:在代理對象中調用selectList 自定義mybatis能經過入門案例看到類 class Resources class SqlSessionFactoryBuilder interface SqlSessionFactory interface SqlSession
新建一個普通的工程
)