2006年世界杯歌曲_冰岛世界杯排名 - guoyunzhan.com

  • 首页
  • 世界杯黑马
  • 世界杯直播app
  • 世界杯小组赛规则
  • 2025-10-19 23:33:56

    MyBatis 的核心组件有哪些?Mapper 接口为什么不需要实现类就能执行 SQL?动态代理是如何实现的?

    MyBatis 的核心组件

    MyBatis 的核心组件包括以下几个部分,它们协同工作完成 SQL 映射和执行:

    SqlSessionFactory

    是 MyBatis 的核心工厂类,负责创建 SqlSession 对象。通常由 SqlSessionFactoryBuilder 基于 XML 配置文件或 Java 注解构建。生命周期应为应用级(全局唯一),避免重复创建消耗资源。

    SqlSession

    代表与数据库的一次会话,提供了执行 SQL、获取 Mapper 接口的方法。生命周期为请求级或方法级,用完需及时关闭,避免连接泄漏。包含 selectOne()、selectList()、insert()、update()、delete() 等操作数据库的方法。

    Mapper 接口

    定义数据库操作方法的接口,方法名与 SQL 语句的 ID 对应。无需手动实现,MyBatis 通过动态代理自动生成实现类。

    Mapper XML 文件 / 注解

    存放 SQL 语句,通过命名空间(namespace)与 Mapper 接口关联。支持动态 SQL(如 、)、参数映射、结果集映射等。也可通过 @Select、@Insert 等注解直接在 Mapper 接口上编写 SQL。

    Executor

    MyBatis 的内部执行器,负责 SQL 的实际执行。有三种类型:SIMPLE(默认,简单执行器)、REUSE(复用预处理语句)、BATCH(批量执行)。

    StatementHandler

    处理 JDBC 的 Statement 操作,包括参数设置、SQL 执行、结果集映射。

    ResultMap

    定义查询结果与 Java 对象的映射关系,解决列名与属性名不一致的问题。

    Mapper 接口为什么不需要实现类就能执行 SQL?

    MyBatis 通过动态代理机制为 Mapper 接口自动生成实现类,核心原理如下:

    接口与 SQL 的绑定Mapper 接口的全限定名(如 com.example.UserMapper)与 XML 文件的 namespace 一致,接口中的方法名与 XML 中