• Spring与MyBatis整合


    SpringMyBatis整合

    一、概述

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

    二、Mapper动态代理实现整合

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

    Dao 接口的包中创建 MyBatis 的映射文件 mapper,命名与接口名相同,本例为IStudentDao.xmlmapper 中的 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 接口的对象,这是多态的应用。

      

    Dao

     

    DaoXml

     

    实体类

     

    Service接口层

     

    Service实现类

     

    Jdbc.properties工具类

     

    测试类

     

    二.注解方式

     

    Dao添加注解

     

    Service实现层添加注解

     

  • 相关阅读:
    sqlalchemy学习-- 重要参数
    sqlalchemy 学习-- 多表操作
    sqlalchemy 学习--单表操作
    python 获取命令行参数
    subline 相关
    semver 版本号命名法
    nginx四层负载nginx七层负载,nginx基于nginx-sticky会话保持.
    nginx知识点汇总
    Kubernetes操作图
    redis安装和基础使用
  • 原文地址:https://www.cnblogs.com/qinzhenyu/p/11799312.html
Copyright © 2020-2023  润新知