别再问我MyBatis了,Mapper的解析与加载底层原理我都能讲清楚~ | 您所在的位置:网站首页 › mapper的方法 › 别再问我MyBatis了,Mapper的解析与加载底层原理我都能讲清楚~ |
ParameterHandler:⽤于处理 SQL 中的参数占位符,为参数占位符设置值。 ResultSetHandler:封装了对 ResultSet 对象的处理逻辑,将结果集转换为 Java 实体对象。 ⼆、简述 Mapper 执⾏流程: SqlSession组件,它是⽤户层⾯的API。⽤户可利⽤ SqlSession 获取想要的 Mapper 对象(MapperProxy 代理对象);当执⾏ Mapper 的⽅法,MapperProxy 会创建对应的 MapperMetohd,然后 MapperMethod 底层其实是利⽤ SqlSession 来执⾏ SQL。 但是真正执⾏ SQL 操作的应该是 Executor组 件,Executor 可以理解为 SQL 执⾏器,它会使⽤ StatementHandler 组件对 JDBC 的 Statement 对象进⾏操作。当 Statement 类型为 CallableStatement 和 PreparedStatement 时,会通过 ParameterHandler 组件为 参数占位符赋值。 ParameterHandler 组件中会根据 Java 类型找到对应的 TypeHandler 对象,TypeHandler 中会通过 Statement 对象提供的 setXXX() ⽅法(例如setString()⽅法)为 Statement 对象中的参数占位符设置值。 StatementHandler 组件使⽤ JDBC 中的 Statement 对象与数据库完成交互后,当 SQL 语句类型为 SELECT 时,MyBatis 通过 ResultSetHandler 组件从 Statement 对象中获取 ResultSet 对象,然后将 ResultSet 对象转换为 Java 对象。 我们可以⽤⼀幅图来描述上⾯各个核⼼组件之间的关系: |
CopyRight 2018-2019 实验室设备网 版权所有 |