
源码解析
请叫我程序猿大人
这个作者很懒,什么都没留下…
展开
-
mybatis-sqlsession解析
概述mybatis的执行流程(来源于网络):前几篇分析过Executor,执行器在StatementHandler上添加了缓存和事务的功能,但api还是比较偏底层,因此需要再Executor上再封装、增强一层,因此就有了SqlSession。使用实例:// 构造 SqlSessionFactoryReader reader = Resources.getResourceAsReader("org/apache/ibatis/autoconstructor/mybatis-config.xml")原创 2020-07-09 17:06:25 · 509 阅读 · 0 评论 -
mybatis-ResultHandler解析
概述结果值的处理相当于参数的处理会复杂一些,负责结果值转换的类是 ResultSetHandlerpublic interface ResultSetHandler { /** * 处理数据集并返回 * @param stmt * @param <E> * @return * @throws SQLException */ <E> List<E> handleResultSets(Statement stmt) throw原创 2020-07-08 18:11:35 · 11812 阅读 · 1 评论 -
mybatis-StatementHandler解析
概述StatementHandler,Statement处理器,主要是和jdbc中的Statement交互。public interface StatementHandler { /** * 创建Statement * @param connection * @param transactionTimeout * @return * @throws SQLException */ Statement prepare(Connection connection原创 2020-07-08 10:00:40 · 286 阅读 · 0 评论 -
mybatis-executor解析
概述执行器包主要包含了 Executor、ParameterHandler、ResultSetHandler、StatementHandler。这些都是sql执行中非常重要的一环,本篇从Executor开始。Executor:执行器,主要职责是在sql执行过程中添加缓存和事务的功能。与jdbc相关的操作会继续委托给StatementHandler。Executorpublic interface Executor { ResultHandler NO_RESULT_HANDLER = nu原创 2020-07-07 15:21:28 · 343 阅读 · 0 评论 -
mybatis-初始化(三)statement解析
概述Statement是我们平时sql的载体,一条sql代表一个Statement,来看下mybatis如何解析Statement。接着上篇最后的入口private void buildStatementFromContext(List<XNode> list, String requiredDatabaseId) { for (XNode context : list) { final XMLStatementBuilder statementParser = new XML原创 2020-07-04 14:26:47 · 1140 阅读 · 0 评论 -
mybatis-初始化(二)映射文件解析
概述mapper.xml是我们使用mybatis接触最多的,需要编写sql、ResultMap、ParameterMap等。且看如何解析xml,并注册到Configuration中。入口接着上篇mybatis-confg解析的末尾,关于mapper.xml的解析。先上实例mapper内容:入口类是 XMLMapperBuilder,无论是单个还是批量都是循环遍历 XMLMapperBuilder.parse()。public class XMLMapperBuilder extends Bas原创 2020-07-03 22:30:25 · 212 阅读 · 0 评论 -
mybatis-初始化(一)mybatis-confg解析
概述mybatis初始化主要包含mybatis全局配置加载、解析,mapper文件加载解析。本篇主要是对mybatis配置文件解析进行解读。先看下mybatis-config.xml有些啥内容configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)原创 2020-07-02 10:41:50 · 265 阅读 · 0 评论 -
mybatis-binding 绑定包解析
概述为了实现直接调用Mapper接口类的方法,便达到调用sql的目标,mybatis-binding包提供了Mapper接口的代理类和其方法的代理类。主要起到连接 Mapper.java 和 Mapper.xml的作用。方法映射绑定为了连接Mapper接口的方法 和 Mapper.xml的statement,于是就有了类 MapperMethodpublic class MapperMethod { // 代表一条sql命令的属性 private final SqlCommand com原创 2020-06-30 21:50:40 · 271 阅读 · 0 评论 -
mybatis-type 类型包解析
概述类型包是mybatis提供类型转换处理的包,mybatis提供了许多基本类型处理器的实现。在javaType和jdbcType之间转换时所用到。TypeHandler本包的重点类,类型处理器public interface TypeHandler<T> { // 往Statement中设置参数,javaType 转 jdbcType void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jd原创 2020-06-30 14:33:22 · 725 阅读 · 0 评论 -
mybatis-cache缓存包解析
概述缓存包是mybatis对缓存的抽象和实现,可为其他模块提供缓存的支持。其设计也很值得借鉴。大概分为缓存定义(抽象、异常、缓存键)缓存实现缓存装饰者可以重点在于缓存策略装饰模式实现,可以复习复习装饰模式啦。Cachepublic interface Cache { String getId(); void putObject(Object key, Object value); Object getObject(Object key); Object removeOb原创 2020-06-29 21:40:30 · 398 阅读 · 1 评论 -
mybatis-reflection反射包解析
反射包解析概述mybatis反射包,提供了反射相关的工具,为啥要提供这些工具呢,java不是已经提供反射的功能了吗?java反射虽然已经很强大,但是api偏底层,要想使用好可能会需要大量重复代码,可能使用不当也会产生性能问题,因此mybatis提供反射包提炼、封装、增强反射api,让上层应用用的更舒心。包内容:接下来会挑重点的类讲解下原理。Invokerinvoker单独有一个子包,概念比较独立,也比较简单,代表执行器。包装了Method、Field的执行Invoker定义:publi原创 2020-06-29 17:21:04 · 615 阅读 · 0 评论 -
mybatis-spring原理解析
mybatis-spring解析概述mybatis-spring让mybatis和Spring无缝对接,无需再关心mybatis中的Configuration、SqlSessionFactory、SqlSession,自动为Mapper创建实例注册到SpringIoc容器中, 并由Spring事务管理。在使用spring的前提下更加简化了Mybatis的操作,使用过程不用关心任何mybatis的相关概念。Mybatis-spring主要做的内容包含: mybatis相关类 “Spri.原创 2020-06-29 11:29:25 · 1625 阅读 · 0 评论