• 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 接口的对象,这是多态的应用。
      这里写图片描述

  • 相关阅读:
    【Git学习二】时光回溯:git reset和git checkout命令详解
    在vue2项目中使用vue-quill-editor实现富文本编译器
    gitlab Activating and deactivating users
    oracle数据库事务的四大特性与隔离级别与游标
    go语言 | 图解字节青训营抖音(一)
    一文带你搞懂 JWT 常见概念 & 优缺点
    SpringBoot+Vue搭建Admin管理系统
    PTA天梯赛训练 7-8 查验身份证 (15分)
    一文了解线上展厅如何制作,线上展厅制作需要注意什么
    英语单词同义词辨析
  • 原文地址:https://blog.csdn.net/m0_67402914/article/details/126516472