mybatis
yaMa_码子
码子的源码之路
展开
-
Mybatis源码之温故jdbc
我们回顾下之前没有使用Mybatis,使用原生态jdbc的场景public Integer insert(User user) { Connection conn = null; PreparedStatement preparedStatement = null; String insertSql = "INSERT INTO USER (name,原创 2017-11-08 10:28:52 · 459 阅读 · 0 评论 -
Mybatis源码(一)之Spring整合Mybatis扫描dao
带着几个问题我们来分析下Spring是如何整合Mybatis的1.Spring是如何扫描Dao,将其转换成BeanDefinition注册到BeanFactory的? 2.为什么我们可以直接使用dao接口调用方法就能操作数据库了? 3. 原生Mybatis的使用和jdbc的使用与跟Spring整合之后,我们到底哪里方便使用了你可能猜到: 问题一使用Spring的拓展接口。 问题二使...原创 2017-11-08 18:58:47 · 4199 阅读 · 0 评论 -
Mybatis源码(二)之Spring整合mybatis创建SqlSession
Spring未整合Mybatis和整合之后Mybatis获取的方式:Spring没有整合Mybatis之前,获取SqlSession很简单就是DefaultSqlSessionFactory.openSession();Spring整合Mybatis的时候,稍复杂些: 扫描dao,注册BeanDefinition并setBeanClass=MapperFactoryBeanSqlSessionT原创 2017-11-08 19:00:14 · 3271 阅读 · 0 评论 -
Mybatis源码(三)之SqlSession执行流程全貌
上一篇博文解释了SqlSession是如何创建的Spring整合mybatis创建SqlSession本篇博文注重你对流程的理解,可以增长你的内功修为。 后续的博文也会写一些实现细节跟你平时调试很相关,比如像动态Sql,读取配置文件等。 后者注重于你调试(就是码农干的事情),前者让你从全局更了解Mybatis工作流程。 了解全貌之后,遇到什么问题,或者着重看那块,能帮你快速定位源码,省下的就是原创 2017-11-10 18:55:40 · 672 阅读 · 0 评论 -
MyBatis源码(四)之mapper文件解析和动态Sql解析启动阶段
上篇博文介绍了Mybatis 执行流程全貌 非常重要。本博文mybatis启动过程是如何解析配置文件的。 这还得从Spring的配置文件中SqlSessionFactoryBean 创建SqlsessionFactory说起。该Bean实现了InitializingBean【又是一个Spring的拓展点】在Spring实例化设置和属性之后会触发afterPropertySet的调用。 每个mapp原创 2017-11-17 18:35:18 · 767 阅读 · 0 评论 -
MyBatis源码(五)之动态Sql解析运行阶段参数处理
上篇博文分析到Mapper文件的读取,以及启动过程动态Sql的解析部分 MyBatis源码(四)之mapper文件解析和动态Sql解析启动阶段本博文继续动态Sql的解析,在运行时的解析。前文也提过,在动态Sql中,sql的最终生成是依靠传入的参数来决定的。所以在继续分析之前先来分析下是mybatis是怎么接收参数的。dao参数上可能有@Param注解,参数中可能有集合Collection,如何跟之前原创 2017-11-22 18:49:49 · 627 阅读 · 2 评论 -
MyBatis源码(六)之动态Sql解析运行阶段BoundSql
上篇博文讲述的是dao方法参数是如何传递到Executor的MyBatis源码(五)之动态Sql解析运行阶段参数处理 一定要有这个基础,在进行本博文你将看到一条Sql是如何拼装出来的。我把运行时信息打印出来,主要是在顺便回顾下之前的讲解读取mapper过程,解析select insert 等标签的时候有一行代码是获取SqlSouce的,解析的时候有一个动态标签 if foreach where 等原创 2017-11-24 13:28:43 · 1311 阅读 · 0 评论