zoukankan      html  css  js  c++  java
  • 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实现层添加注解

     

  • 相关阅读:
    我是服务的执政官-服务发现和注册工具consul简介
    跳闸了啊! 服务容灾:熔断器简介
    论获取缓存值的正确姿势
    容器化redis高可用方案
    ASP.NET SessionState 解惑
    Thymeleaf 模板的使用
    记录js的一个图片预览功能代码
    记录一个简单的可以拖动的弹出层
    oracle安装报错[INS-30131]执行安装程序验证所需的初始设置失败(无法访问临时位置)解决方法!
    nginx学习笔记2
  • 原文地址:https://www.cnblogs.com/qinzhenyu/p/11799312.html
Copyright © 2011-2022 走看看