Spring整合mybatis实现过程详解
作者:赫拉克利特 发布时间:2022-05-23 02:10:23
增加了用于处理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的配置
来源:https://www.cnblogs.com/mo-jian-ming/p/13288423.html


猜你喜欢
- 1、每帧检查定义一个时间变量 timer,每帧将此时间减去帧间隔时间 Time.deltaTime,如果小于或者等于零,说明定时器到了,执行
- 1. 启动入口本系列RocketMQ4.8注释github地址,希望对大家有所帮助,要是觉得可以的话麻烦给点一下Star哈前面我们已经分析完
- 哎,最近很好久没写点东西了,由于工作的原因,接触公司自己研发的底层orm框架,偶然发现该框架在调用jdbc操作的时候参考的是hibernat
- 在Android开发中我们很多地方都用到了方法的回调,回调就是把方法的定义和功能导入实现分开的一种机制,目的是为了解耦他的本质是基于观察者设
- 最近在公司,项目不是很忙了,偶尔看见一个兄台在CSDN求助,帮忙要一个自定义的渐变色进度条,我当时看了一下进度条,感觉挺漂亮的,就尝试的去自
- 本文实例讲述了C#中IEnumerable接口用法。分享给大家供大家参考。具体分析如下:枚举数可用于读取集合中的数据,但不能用于修改基础集合
- 我们知道,Object类是所有类的父类,因此也被称为根类、祖先。那么,我们就来看一看Object类的最常用的两个方法是如何用的。1.toSt
- Android 界面刷新 Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,
- java 删除链表中的元素以下实例演示了使用 Clear() 方法来删除链表中的元素:import java.util.*;public c
- 方案实施1、 spring和ehcache集成主要获取ehcache作为操作ehcache的对象。spring.xml中注入ehcacheM
- Android 中Activity 之间传递参数1.传递简单数据在A Activity中findViewById(R.id.startBAc
- 只是为了研究下idea这款编译器怎么使用。开门见山,说下如何配置这款编译器,不配置也能用,但是强迫症表示不服。下面直入正题:下载与安装就不说
- 本期文章源码:GitHub一文彻底搞懂《并查集》!概念并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。
- 进阶JavaSE-三大接口:Comparator、Comparable和Cloneable。Comparable和Comparator这两个
- 不过我写的比较草率,代码结构不是很好,也没有体现OOP的思想,这几天有空会重构一下。先把代码发出来:public class MatrixC
- 1. SpringBoot 配置文件1.1 配置文件的作用配置文件中配置了项目中重要的数据, 例如:数据库的连接信息 (用户名密码)项目的启
- Vector的基本介绍1.:Vector类的定义:public class Vector<E> ext
- 亲爱的读者,在这篇文章中,我提供了一些c#编程的最佳实践。你是否在用户输入验证中使用异常处理机制?如果是,那么你就是那个把你的项目执行速度降
- 一、 HttpURLConnection以GET方式访问网络:HttpURLConnection connection = null;try
- 阅读Dubbo源码过程中,会发现,Dubbo消费端在做远程调用时,默认通过 Javassist 框架为服务接口生成 * 类,调用javas