【数据库】mybatis & Mybatis-spring

 

 

MyBatis-Spring

 主要作用是将纯 MyBatis 框架无缝集成到 Spring/Spring Boot 的生态中,让 MyBatis 能够利用 Spring 的核心功能(如 IOC 容器和声明式事务管理),从而省去大量手动创建 SqlSessionFactory、管理 SqlSession 以及编写重复事务控制代码的繁琐工作。 [1, 2, 3]
详细对比原生 MyBatis,MyBatis-Spring 的核心作用和优势体现在:
1. 融入 Spring IOC 容器(自动创建与注入 Bean)
  • 纯 MyBatis:需要开发者手动通过 SqlSessionFactoryBuilder 读取配置文件构建 SqlSessionFactory,再手动打开 SqlSession,获取 Mapper 并在用完后手动 close()。
  • MyBatis-Spring:通过 MapperFactoryBean 或自动扫描机制,把 MyBatis 的 Mapper 接口直接交给 Spring IOC 容器管理,让开发者能够像注入普通 Service 一样,直接在业务层 @Autowired 注入 Mapper 接口对象。 
    2. 参与并简化事务管理
    • 纯 MyBatis:数据库的提交(commit)、回滚(rollback)以及关闭连接需要开发者在代码中显式调用。
    • MyBatis-Spring:允许 MyBatis 参与到 Spring 的事务管理之中。开发者只需使用 @Transactional 注解,由 Spring AOP 统一管理事务,消除大部分编程式事务的模板代码。 
      3. 生命周期与线程安全优化
      • 纯 MyBatis:如果不小心在多线程环境下直接共享同一个 SqlSession,会出现线程安全问题。
      • MyBatis-Spring:创建线程安全、与 Spring 事务同步的 SqlSession(底层通过 SqlSessionTemplate),它会自动管理会话的生命周期,确保在 Spring 事务中获取的是同一个会话,用完安全释放。

       

      Mybatis 的 Mapper 注入到 Spring 容器的几种方式

      1、在applicationContext.xml中使用<mybatis:scan base-package=XX />

      2、在applicationContext.xml中使用bean标签注册MapperScannerConfigurer

      3、如果应用使用Java配置方式而不是XML;则在@Configuration配置类使用 @MapperScan或者 @MapperScans注解

       

      MyBatis-Spring 底层核心类(如 SqlSessionFactoryBean、SqlSessionTemplate)

       

       

       

      posted @ 2026-09-20 11:19  飞翔在天  阅读(9)  评论(0)    收藏  举报