• Spring与MyBatis整合


    Spring与MyBatis整合

    一、概述

    • 将MyBatis与Spring进行整合,主要解决的问题就是将SqlSessionFactory对象交由Spring容器来管理,所以,该整合,只需要将SqlSessionFactory的对象生成器SqlSessionFactoryBean注册在Spring容器中,再将其注入给Dao的实现类即可完成整合。

    二、Mapper动态代理实现整合

    (1)导入相关jar包、定义映射文件mapper

    • 在 Dao 接口的包中创建 MyBatis 的映射文件 mapper,命名与接口名相同,本例为IStudentDao.xml。mapper 中的 namespace 取值也为 Dao 接口的全限定性名。
      这里写图片描述

    (2)定义MyBatis主配置文件

    • 在src下定义Mybatis的主配置文件,命名为mybatis.xml。
    • 注意两点:
      1,主配置文件中不再需要数据源的配置了。因为数据源要交给 Spring 容器来管理了。
      2,这里对 mapper 映射文件的注册,使用package标签,即只需给出 mapper 映射文件所在的包即可。因为 mapper 的名称与 Dao 接口名相同,可以使用这种简单注册方式。这种方式的好处是,若有多个映射文件,这里的配置也是不用改变的。当然,也可使用resource标签方式。
      这里写图片描述

    (3)定义Spring配置文件

    • 注册SqlSessionFactoryBean
      这里写图片描述

    • 使用 MapperFactoryBean 生成 Dao 代理对象

      由于使用 Mapper 动态代理方式没有 Dao 实现类,所以 Dao 的实现类对象由代理工厂生成:MapperFactoryBean 映射工厂 Bean。
      这里写图片描述

    • 添加事务配置
      这里写图片描述

    三、支持扫描的 Mapper 动态代理实现整合

    • Mapper 扫描配置器 MapperScannerConfigurer 会自动生成指定的基本包中 mapper 的代理对象。该 Bean 无需设置 id 属性。此时需要删除 MapperFactoryBean 的配置。
      这里写图片描述

    • 向 Service 注入接口名
      向 Service 注入 Mapper 代理对象时需要注意,由于通过 Mapper 扫描配置器MapperScannerConfigurer 生成的 Mapper 代理对象没有名称,所以在向 Service 注入 Mapper代理时,无法通过名称注入。但可通过接口的简单类名注入,因为生成的是这个 Dao 接口的对象,这是多态的应用。
      这里写图片描述

  • 相关阅读:
    istio 初识
    【金蝶BI方案】做生产订单分析,要分析哪些指标?
    二叉堆(基础)
    AcWing算法提高课-5.6.1同余方程
    带你了解MySQL数据库(二)
    PIE-engine 教程 ——新疆石河子市棉花种植面积提取(阈值法)案例分析
    尚硅谷大数据Hadoop教程
    MWC 2024 | 广和通携手意法半导体发布智慧家居解决方案
    【Vue3】自定义指令
    GRPC 和 http
  • 原文地址:https://blog.csdn.net/m0_67402914/article/details/126516472