@Test public void getUser() { User user = userMapper.selectById(1); System.out.println("user:" + user); }
A、userMapper的本質是org.apache.ibatis.binding.MapperProxy
B、MapperProxy中有一個SqlSession,SqlSession中有一個SqlSessionFactroy
C、SqlSessionFactroy中有一個 Configuration --> MappedStatements
每一個MappedStatement都表示mapper接口中的一個方法與mapper映射文件中的一個sql
MP啟動就會挨個分析xxxMapper中的方法,並且將對應的sql預計處理好,保存到Configuration 對象中的MappedStatements
D、本質 addMappedStatement
AutoSqlInjector中的addMappedStatement
SqlMethed :枚舉對象,MP支持的sql方法,sql的模板
TableInfo :數據庫的反射表信息,可以獲取到數據庫表相關的信息
SqlSource :sql語句處理對象 存放處理完的sql語句
MapperBuilderAssistant :用於緩存、sql參數、查詢返回結果集處理,通過MapperBuilderAssistant將每一個MappedStatement添加到configuration中的MappedStatement中