• 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实现层添加注解

     

  • 相关阅读:
    [网络]公共网络安全漏洞库: CVE / CNCVE
    [网络/SSH]OpenSSH: sshd / sftp-server / ssh-agent | ssh / scp / sftp
    [网络/WebServer/Nginx]代理模式:正向代理与反向代理
    [数据库/MySQL]解决异常:Data truncation: Truncated incorrect DOUBLE value: 'dc5'
    [Java EE]Spring Boot 与 Spring Cloud的关系/过去-现在-未来
    [Java SE]Java8新特性——默认方法
    [Java SE]javac编译时编码错误
    [灾备]独立磁盘阵列(RAID)技术
    [Nginx]安装第三方调试模块——echo | #解决异常#unknown directive “echo”
    [Linux]常用命令之【source】
  • 原文地址:https://www.cnblogs.com/qinzhenyu/p/11799312.html
Copyright © 2020-2023  润新知