延遲加載sql
緩存數據庫
註解開發 緩存
一、Mybatis中的延遲加載 問題:在一對多中,當咱們有一個用戶,它有100個帳戶。 在查詢用戶的時候,要不要把關聯的帳戶查出來? 在查詢帳戶的時候,要不要把關聯的用戶查出來? 在查詢用戶時,用戶下的帳戶信息應該是,何時使用,何時查詢的。 在查詢帳戶時,帳戶的所屬用戶信息應該是隨着帳戶查詢時一塊兒查詢出來。 什麼是延遲加載 在真正使用數據時才發起查詢,不用的時候不查詢。按需加載(懶加載) 什麼是當即加載 無論用不用,只要一調用方法,立刻發起查詢。 在對應的四種表關係中:一對多,多對一,一對一,多對多 一對多,多對多:一般狀況下咱們都是採用延遲加載。 多對一,一對一:一般狀況下咱們都是採用當即加載。 二、Mybatis中的緩存 什麼是緩存 存在於內存中的臨時數據。 爲何使用緩存 減小和數據庫的交互次數,提升執行效率。 什麼樣的數據能使用緩存,什麼樣的數據不能使用 適用於緩存: 常常查詢而且不常常改變的。 數據的正確與否對最終結果影響不大的。 不適用於緩存: 常常改變的數據 數據的正確與否對最終結果影響很大的。 例如:商品的庫存,銀行的匯率,股市的牌價。 Mybatis中的一級緩存和二級緩存 一級緩存: 它指的是Mybatis中SqlSession對象的緩存。 當咱們執行查詢以後,查詢的結果會同時存入到SqlSession爲咱們提供一塊區域中。 該區域的結構是一個Map。當咱們再次查詢一樣的數據,mybatis會先去sqlsession中 查詢是否有,有的話直接拿出來用。 當SqlSession對象消失時,mybatis的一級緩存也就消失了。 二級緩存: 它指的是Mybatis中SqlSessionFactory對象的緩存。由同一個SqlSessionFactory對象建立的SqlSession共享其緩存。 二級緩存的使用步驟: 第一步:讓Mybatis框架支持二級緩存(在SqlMapConfig.xml中配置) 第二步:讓當前的映射文件支持二級緩存(在IUserDao.xml中配置) 第三步:讓當前的操做支持二級緩存(在select標籤中配置) 三、Mybatis中的註解開發 環境搭建 單表CRUD操做(代理Dao方式) 多表查詢操做 緩存的配置