1、mybatis執行過程分析
2、mybatis插件
3、通用Mapper使用
1.1 getMapper的到MapperProxy實例:
部分源碼:
DefaultSqlSession類:
Configuration類:
MapperRegistry類:
MapperProxyFactory類:
1.2 Executor執行的過程:
部分源碼:
MapperProxy類:
MapperMethod類:
DefaultSqlSession類:
BaseExecutor類:執行器的實現類:
SimpleExecutor類:
1.3 執行流程描述
執行器:
SimpleExecutor:默認的執行器
BatchExecutor:批處理的執行器
ReuseExecutor:預處理,重用的執行器
MyBatis 允許妳在已映射語句執行過程中的某壹點進行攔截調用。默認情況下,MyBatis 允許使用插件來攔截的方法調用包括:
1、創建攔截器類:
調試效果:
2、在全局配置文件中註冊攔截器:
源碼分析:
Plugin類:
3、測試;
2.2、pagehelper分頁插件使用:
官網:https://pagehelper.github.io/
1、引入jar包:
2、註冊攔截器:
參考官網用法
3、使用:
通用Mapper簡介:
通用Mapper都可以極大的方便開發人員。可以隨意的按照自己的需要選擇通用方法,還可以很方便的開發自己的通用方法。
極其方便的使用MyBatis單表的增刪改查。
支持單表操作,不支持通用的多表聯合查詢。
官方文檔參考
1、引入依賴:
2、定義實體類型:
泛型實體類的要求:
示例:
3、創建Dao接口:
4、測試:
部分接口說明:
Select
接口:SelectMapper<T>
方法:List<T> select(T record);
說明:根據實體中的屬性值進行查詢,查詢條件使用等號
接口:SelectByPrimaryKeyMapper<T>
方法:T selectByPrimaryKey(Object key);
說明:根據主鍵字段進行查詢,方法參數必須包含完整的主鍵屬性,查詢條件使用等號
Insert
接口:InsertMapper<T>
方法:int insert(T record);
說明:保存壹個實體,null的屬性也會保存,不會使用數據庫默認值
接口:InsertSelectiveMapper<T>
方法:int insertSelective(T record);
說明:保存壹個實體,null的屬性不會保存,會使用數據庫默認值
Update
接口:UpdateByPrimaryKeyMapper<T>
方法:int updateByPrimaryKey(T record);
說明:根據主鍵更新實體全部字段,null值會被更新
接口:UpdateByPrimaryKeySelectiveMapper<T>
方法:int updateByPrimaryKeySelective(T record);
說明:根據主鍵更新屬性不為null的值
Example 方法
接口:SelectByExampleMapper<T>
方法:List<T> selectByExample(Object example);
說明:根據Example條件進行查詢
重點:這個查詢支持通過Example類指定查詢列,通過selectProperties方法指定查詢
測試之前的準備:
示例1:根據主鍵進行查詢:
沒有設置@Id的結果:
設置@Id後的結果1:
示例2:錄入測試:
示例3:query by criteria
查詢命令如下:
通用Mapper也可以使用MBG自動生成;
1、Mybatis的執行流程分析
2、Mybatis的插件機制
3、通用Mapper使用