别再问我MyBatis了,Mapper的解析与加载底层原理我都能讲清楚~ 您所在的位置:网站首页 mapper的方法 别再问我MyBatis了,Mapper的解析与加载底层原理我都能讲清楚~

别再问我MyBatis了,Mapper的解析与加载底层原理我都能讲清楚~

#别再问我MyBatis了,Mapper的解析与加载底层原理我都能讲清楚~| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有