Spring整合mybatis实现过程详解

 更新时间:2020年07月15日 15:36:12   作者:赫拉克利特  
这篇文章主要介绍了Spring整合mybatis实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

增加了用于处理MyBatis的两个bean:SqlSessionFactoryBean、MapperFactoryBean

1、注册SqlSessionFactoryBean:

(1)实现 InitializingBean:调用其afterPropertiesSet方法(this.sqlSessionFactory = buildSqlSessionFactory())

目的就是对于sqlSessionFactory的初始化。

(2)FactoryBean:getBean方法获取bean(= 获取此类的getObject()返回的实例)

if (this.sqlSessionFactory == null) {
    afterPropertiesSet();
  }
return this.sqlSessionFactory;

2、注册MapperFactoryBean:

同样实现FactoryBean和InitializingBean

this.sqlSessionTemplate = createSqlSessionTemplate(sqlSessionFactory);
//sqlSession作为根据接口创建映射器代理的接触类一定不可以为空,
设定其sqlSessionFactory属性时完成初始化。
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
  <property name="mapperInterface" value="org.cellphone.uc.repo.mapper.UserMapper"/>
  <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>//接口是映射器的基础,sqlSession会根据接口动态创建相应的代理类,所以接口必不可少。

1.0:UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

2.0:UserMapper userMapper = (UserMapper) context.getBean("userMapper");

//MyBatis在获取映射的过程中根据配置信息为UserMapper类型动态创建了代理类

3、使用MapperScannerConfigurer:

让它扫描特定的包,自动帮我们成批地创建映射器。不需要我们对于每个接口都注册一个MapperFactoryBean类型的对应的bean,在扫描的过程中通过编码的方式动态注册。

抽象:屏蔽掉了最原始的代码(userMapper的创建)而增加了MapperScannerConfigurer的配置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解SpringMVC和MyBatis框架开发环境搭建和简单实用

    详解SpringMVC和MyBatis框架开发环境搭建和简单实用

    这篇文章主要介绍了详解SpringMVC和MyBatis框架开发环境搭建和简单实用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 最新版IDEA配置 Tomcat的详细过程

    最新版IDEA配置 Tomcat的详细过程

    本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,配置编译输出路径和依赖,将Tomcat的jar包复制到项目中,最后,配置Tomcat服务器并运行项目,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-01-01
  • Mybatis中如何映射mysql中的JSON字段

    Mybatis中如何映射mysql中的JSON字段

    在mapper.xml中,需要在字段映射时加入typeHandler,具体:<id property="abnormalEigenList" column="AbnormalEigen" typeHandler="com.xxx.config.JsonHandler">,下面通过本文给大家介绍Mybatis中,映射mysql中的JSON字段,需要的朋友可以参考下
    2023-10-10
  • Java线程本地变量导致的缓存问题解决方法

    Java线程本地变量导致的缓存问题解决方法

    使用缓存可以缓解大流量压力,显著提高程序的性能,我们在使用缓存系统时,尤其是大并发情况下,经常会遇到一些疑难杂症,这篇文章主要给大家介绍了关于Java线程本地变量导致的缓存问题的解决方法,需要的朋友可以参考下,
    2024-08-08
  • Java LocalTime的常用时间操作总结

    Java LocalTime的常用时间操作总结

    日常开发中, 我们会经常遇到时间的运算, 操作, 格式化等, 这篇文章主要为大家详细介绍了LocalTime的常用时间操作,感兴趣的小伙伴可以了解一下
    2023-11-11
  • springboot的@Value中#和$区别详解

    springboot的@Value中#和$区别详解

    这篇文章主要介绍了springboot的@Value中#和$区别详解,@Value注解的作用主要可以给属性直接赋值、也可以读取配置文件中的值给属性赋值,需要的朋友可以参考下
    2023-11-11
  • Java实现一个简单的长轮询的示例代码

    Java实现一个简单的长轮询的示例代码

    长轮询是与服务器保持即时通信的最简单的方式,它不使用任何特定的协议,例如 WebSocket ,所以也不依赖于浏览器版本等外部条件的兼容性。本文将用Java实现一个简单的长轮询,需要的可以参考一下
    2022-08-08
  • Spring Boot 集成 RocketMQ 全流程指南(从依赖引入到消息收发)

    Spring Boot 集成 RocketMQ 全流程指南(从依赖引入到消息收发

    本文将通过 手动连接 和 配置连接 两种方式,详细讲解如何在 Spring Boot 中集成 RocketMQ,实现消息的同步与异步发送,并提供完整示例代码,感兴趣的朋友一起看看吧
    2025-04-04
  • 详解Java深拷贝,浅拷贝和Cloneable接口

    详解Java深拷贝,浅拷贝和Cloneable接口

    这篇文章主要为大家详细介绍了Java中Cloneable接口以及深拷贝与浅拷贝的相关知识,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-08-08
  • Spring Boot支持HTTPS步骤详解

    Spring Boot支持HTTPS步骤详解

    这篇文章主要介绍了Spring Boot支持HTTPS步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论