MyBatis-Plus 通用CRUD啟動注入SQL原理分析


  @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中

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM