Spring整合mybatis源码解读
在spring1中使用mybatis非常方便,并且无感知,久之,就发现好像不太理解Mybatis的使用原理了。于是我们找到数据,代开源代码,好好理解下。
如果没有spirng框架,也是可以使用mybatis,这样就更清楚地看到mybatis的功能点。mybatis使用时核心是SqlSessionFactory对象,而后可以获取SqlSession,然后就可以操作数据库了。
而mybatis-spring中,最重要的是SqlSessionFactoryBean对象,创建该对象,并且注入DataSource,然后就可以开启dataSource的访问了。
public class SqlSessionFactoryBean implements FactoryBean<SqlSessionFactory>, InitializingBean, ApplicationListener<ApplicationEvent> {
// 会自动获取FactoryBean对象
}
springboot比这个更进一步,使用
1 | org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration<br> // 该类实现了自动化配置 |
""""
这意味着由 Spring 最终创建的 bean 并不是 SqlSessionFactoryBean 本身,而是工厂类(SqlSessionFactoryBean)的 getObject() 方法的返回结果。这种情况下,Spring 将会在应用启动时为你创建 SqlSessionFactory,并使用 sqlSessionFactory 这个名字存储起来。等效的 Java 代码如下:
1 2 3 4 5 6 | @Bean public SqlSessionFactory sqlSessionFactory() { SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); factoryBean.setDataSource(dataSource()); return factoryBean.getObject(); } |
"""
参考博客:
日进有功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2019-06-05 程序调试技巧