Mybatis的優缺點
優點:
- 原生sql
- sql語句與代碼解耦合
- 簡單易學
- 原生的sql語句,sql調優靈活
缺點:
- 半自動ORM,不能自動sql語句
- sql語句依賴於具體數據庫,數據性移植差
Mybatis緩存機制
一級緩存
- 作用域是Session,會對同一個Session中執行語句的結果進行緩存,來提高再次執行的效率
- 內部通過HashMap實現
- 默認開啓
二級緩存
- 作用域是Mapper(namespace),在同一個namespace中查詢sql時,可以從緩存中獲取數據
- 二級緩存可以跨SqlSession生效,並且可以自定義存儲源,比如:ehcache等緩存實現
- 可配置剔除策略、刷新時間、緩存數量等進行優化
問:請介紹一下Mybatis的緩存機制
Mybatis的具體使用相關
- Mybatis是如何預防Sql注入的?利用變量佔位符:#{},進行sql預編譯
- Mybatis怎麼獲取自增id?
- 動態Sql標籤:如何配置?有哪些?
Mybatis的主要對象及其相應的作用
- SqlSessionFactory是用來創建SqlSession的工廠類,對應配置文件中的數據庫配置
- SqlSession:對數據庫的操作是在SqlSession中進行的,SqlSession非線程安全,每次調用數據庫後都需要調用close進行關閉
- Executor:SqlSession通過內部的Executor來進行增刪改查操作
- StatementHandler:用來處理sql語句的預編譯,設置參數
- ParameterHandler:用來設置預編譯參數
- ResultSetHandler:用來處理結果集
- TypeHandler:進行數據庫類型和JavaBean類型的互相映射
Mybatis的插件機制
- 插件機制是通過攔截器組成責任鏈對Executor、StatementHandler、ParameterHandler、ResultSetHandler四個作用點進行定製化處理
- 基於插件機制實現的常用插件:mybatis-pagehelper