mybatis调用代码对象方法,执行SQL


##mybatis调用代码对象方法,执行SQL
```mermaid
sequenceDiagram
MapperProxy(对接口进行代理)->>MapperMetho(处理参数,选择session方法):invoke()
MapperMetho(处理参数,选择session方法)->>DefualtSqlSession(通过接口方法,调用执行器):execute(sqlSession)
DefualtSqlSession(通过接口方法,调用执行器)->>DefualtSqlSession(通过接口方法,调用执行器):1.selectOne(command);2.selectList(statement.parameter);3获取MappedStatement
DefualtSqlSession(通过接口方法,调用执行器)->>BaseExecutor(处理以及缓存委托基本执行起执行操作):executor.query(ms)
BaseExecutor(处理以及缓存委托基本执行起执行操作)->>BaseExecutor(处理以及缓存委托基本执行起执行操作):1.获取BoundSql.2。创建CacheKey.3.query()获取本地缓存queeryFromDatabase()doQuery()存入本地缓存。
BaseExecutor(处理以及缓存委托基本执行起执行操作)->>SimpleExecutor(创建三大对象handler创建连接,处理入参):SimpleExecutor.query()
SimpleExecutor(创建三大对象handler创建连接,处理入参)->>SimpleExecutor(创建三大对象handler创建连接,处理入参):1,获取Configuration、2.创建statementHandler、parameterHandler、ResultSetHandler、3.创建connection\4。parameterize()处理参数
SimpleExecutor(创建三大对象handler创建连接,处理入参)->>PreparedStatementHandler(创建Sql、执行'Sql):StatementHandler.query()
PreparedStatementHandler(创建Sql、执行'Sql)->>PreparedStatementHandler(创建Sql、执行'Sql):1.语句预编译2.psexecute()执行SQL
PreparedStatementHandler(创建Sql、执行'Sql)->>DefaultResultSetHandler(处理结果集):resultSetHandler.handleResultSets()
DefaultResultSetHandler(处理结果集)->>DefaultResultSetHandler(处理结果集):处理结果集
DefaultResultSetHandler(处理结果集)->>MapperProxy(对接口进行代理):返回List

你可能感兴趣的:(Mybatis)