MyBatis
文章平均质量分 96
GDUT_Ember
这个作者很懒,什么都没留下…
展开
-
MyBatis(技术NeiMu):核心处理层(Executor)
回顾Executor模板方法BaseExecutor一级缓存一级缓存简介一级缓存的管理CacheKey如何生成重载的query方法update方法的细节一级缓存清空的情况事务相关操作的细节回顾前面我们看了MyBatis的StatementHandler,而StatementHandler是用于跟数据库进行交互的,并且完成调用ResultSetHandler完成结果集的映射,并且StatemenHandler采用了一个装饰者模式,实际上得到的所有StatementHandler都是RoutingStat.原创 2021-12-16 20:25:29 · 961 阅读 · 0 评论 -
MyBatis(技术NeiMu):核心处理层(StatementHandler)
回顾StatementHandlerRoutingStatementHandlerBaseStatementHandlerParameterHandlerDefaultParameterHandlerSimpleStatementHandler创建Statement执行查询执行修改PrepareStatementHandler创建Statement执行查询执行修改绑定实参CallableStatementHandler回顾StatementHandlerStatementHandler接口是MyBa.原创 2021-12-12 21:20:40 · 1304 阅读 · 0 评论 -
# MyBatis(技术NeiMu):核心处理层(ResultSetHandler)
回顾ResultSetHandlerDefaultResultSetHandlerhandlerResultSets方法ResultSet的迭代过程ResultSetWrapper构造方法映射回顾前面我们已经了解了MyBatis的整个初始化过程,与SQL节点的解析与SQL节点的SQL是如何与实参进行绑定起来、如何根据实参进行动态拼接,下面来看一下MyBatis是如何处理结果集的ResultSetHandlerMyBatis会根据SQL映射配置文件中定义的映射规则,比如resultMap标签、res.原创 2021-12-12 21:11:16 · 1408 阅读 · 0 评论 -
MyBatis(技术NeiMu):核心处理层(SqlNode和SqlSource)
回顾SqlNode与SqlSourceSqlSource组合模式OGNL表达式OgnlCacheDynamicContextContextMapSqlNodeMixedSqlNodeStaticSqlNodeTextSqlNodeSqlSourceBuilderParameterMappingTokenHandlerParameterMappingBoundSqlDynamicSqlSource总结一下动态SQL的解析拓展:${}和#{}的区别RawSqlSource回顾前面我们已经看了整个MyBat.原创 2021-12-12 21:08:58 · 1124 阅读 · 0 评论 -
MyBatis(技术NeiMu):核心处理层(SQL映射配置文件解析:select、insert、update、delete标签的解析)
回顾buildStatementFromContextSqlSourceMappedStatementMapperStatementBuilder的parseStatementNode方法刷新缓存与使用缓存解析include标签解析selectKey标签LangDriverNodeHandler解析SQL总结一下Mapper的解析过程绑定Mapper接口处理incomplete*集合回顾前面我们已经看了SQL映射配置文件上的一些核心标签是如何解析的了,同时也认识了二级缓存的构建过程,下面来看一下对于s.原创 2021-12-12 20:57:15 · 1056 阅读 · 0 评论 -
MyBatis(技术NeiMu):核心处理层(SQL映射配置文件解析)
回顾XMLMapperBuilder判断SQL映射文件是否已经解析过解析mapper标签解析cache子标签解析cache-ref子标签解析parameterMap子标签解析resultMap子标签ResultMapping对象ResultMap对象其他标签的处理constructor标签的处理Resolve处理解析SQL子标签回顾上一章我们已经分析了,MyBatis是如何进行初始化的了,采用建造者模式去创建出Configuration,创建者主要是XMLConfigBuilder,指挥者为SqlSe.原创 2021-12-12 20:49:27 · 1469 阅读 · 0 评论 -
MyBatis(技术NeiMu):核心处理层(MyBatis的初始化)
回顾核心处理层MyBatis初始化建造者模式初始化!BaseBuilder!XMLConfigBuilderparseConfiguration解析Properties标签解析settings标签加载vfs加载logImpl解析typeAlias标签解析plugins节点解析objectFactory标签解析ObjectWrapperFactory标签解析reflectorFactory标签对settings剩下的子标签的解析解析environments标签解析databaseIdProvider标签解析.原创 2021-12-12 20:35:11 · 829 阅读 · 0 评论 -
MyBatis(技术NeiMu):基础支持层(类型转换、日志模块与类加载模块)
回顾MetaObject类型转换TypeHandlerTypeHandlerRegistry注册TypeHandler对象TypeAliasRegistry注册别名日志模块设计模式——六大原则日志适配器类加载模块ResolverUtilIsAAnnotatedWithVFS回顾上一篇分析了几个反射工具,还有对类数据的封装MetaClass,对实例数据的封装ObjectWrapper和创建ObjectWrappe的ObjectWrapperFactoryMetaObjectObjectWrapper.原创 2021-11-21 18:21:30 · 821 阅读 · 0 评论 -
# MyBatis(技术NeiMu):基础支持层(Transaction与Binding)
回顾TransactionJdbcTransaction获取连接提交、回滚、关闭ManagedTransactionTransactionFactoryJdbcTransactionFactoryManagedTransactionFactorybinding模块MapperRegistry注册Mapper与对应的MapperProxyFactory获取Mapper接口的代理对象MapperProxyFactoryMapperProxyPlainMethodInvokerMapperMethodSqlCo.原创 2021-11-21 18:08:51 · 1052 阅读 · 0 评论 -
MyBatis(技术NeiMu):基础支持层(DataSource)
回顾DataSourceDataSourceFactoryUnpooledDataSourceFactoryPooledDataSourceFactoryJndiDataSourceFactoryJNDIUnpooledDataSourcegetConnectioninitializeDriverDriverManager.getConnectionconfigureConnectionPooledDataSourcePooledConnectionPoolStatePooledDataSource的其他.原创 2021-11-21 17:56:15 · 1641 阅读 · 0 评论 -
MyBatis(技术NeiMu):基础支持层(Property工具集)
回顾Property工具集PropertyTokenizerPropertyNamerPropertyCopierMetaClassbuildPropertyhasGetter和hasSetterObjectWrapper和ObjectWrapperFactoryObjectWrapperCollectionWrapperBaseWrapperresolveCollectiongetCollectionValuesetCollectionValueObjectWrapperFactory回顾上一篇分析.原创 2021-11-21 17:46:11 · 630 阅读 · 0 评论 -
MyBatis(技术NeiMu):基础支持层(解析器模块与反射模块)
回顾基础支持层解析器模块XPathParsercommonConstructorcreateDocumenteval方法针对evalString的特殊处理反射模块Reflector和ReflectorFactoryReflectorgetDefaultConstructor方法addGetMethods方法addSetMethods方法addFields方法最后的处理ReflectorFactoryfindForClass回顾前面我们已经认识了MyBatis的整体架构,下面就从下往上去了解一下具体的细.原创 2021-11-21 17:38:27 · 737 阅读 · 0 评论 -
MyBatis(技术NeiMu):基础支持层(类型转换模块与ObjectFactory)
回顾类型转换模块TypeParameterResolver解析字段类型的——resolveFieldType解析方法参数列表中各个参数的类型——resolverParamTypes解析方法返回值的类型——resolverReturnTyperesolveTypeType接口resolverParameterizedTyperesolverTypeVarObjectFactorycreate(Class type)create(Class type,List......)处理集合接口确定好类型后创建对象回.原创 2021-11-21 17:23:49 · 439 阅读 · 0 评论 -
MyBatis(技术NeiMu):整体架构
ORMMyBatis的整体架构基础支持层核心处理层接口层ORM什么是ORM呢?首先我们来认识一下JDBC,JDBC是Java与数据库交互的统一API,其实JDBC分为两组API一组是面向Java应用程序开发人员的API另一组是面向数据库驱动程序开发人员的API这两组怎么进行区分呢?前者是一个标准的Java API,是独立于各个数据库厂家来实现的;而后者则是交由数据库驱动开发人员用于编写数据库驱动的,是前者的底层支持,不同的数据库会有不同的API回顾正题ORM是指Object Rela.原创 2021-11-21 17:19:10 · 1035 阅读 · 0 评论 -
MyBatis(四):参数处理器
回顾参数处理器(ParameterHandler)DefaultParameterHandlertypeHandler去匹配参数setParameter方法前面已经提到了,StatementHadnler会调用参数处理器和结果集映射器来分别做SQL参数的匹配(JavaBean转化成JDBC的参数),和SQL查询出来的结果集转换成JavaBean下面就来看看参数处理器回顾下面就来看看这个过程如何,之前去执行Executor执行doQuery方法时,在生成prepareStatement时,会调用pa.原创 2021-09-14 18:09:03 · 316 阅读 · 0 评论 -
MyBatis(三):StatementHandler
回顾三部分对应关系StatementHandlerStatementHandler结构PrepareStatementHandler执行流程构建StatementHandlerquery方法实现parameter方法实现回顾MyBatis的执行流程Sqlsession (会话层面,门面模式)-》 Executor(执行器,模板方法,doQuery和query)-》 StatementHandler(JDBC处理器)JDBC分为三部分获取Statement,声明Statement设置Sql参.原创 2021-09-09 23:07:11 · 735 阅读 · 0 评论 -
MyBatis(二)缓存
缓存一级缓存命中条件一级缓存源码解析一级缓存结构一级缓存总结一级缓存失效情况Spring集成MyBatis一级缓存失效?Mapper二级缓存二级缓存的定义二级缓存的结构溢出淘汰策略过期清理策略线程安全序列化Cache接口二级缓存命中条件二级缓存的配置二级缓存架构二级缓存执行流程二级缓存源码TransactionalCacheCachingExecutor的query方法TransactionalCache的getObject方法TransactionalCache的putObject方法Transacti.原创 2021-09-08 22:58:56 · 1221 阅读 · 1 评论 -
MyBatis(一):BaseExecutor与CachingExecutor
架构执行过程ExecutorBaseExcutorquery方法queryFromDatabase方法SimpleExecutor(默认实现)doQuery方法ReuseExecutordoQuery方法BatchExecutor总结BaseExecutor缓存Caching Executor二级缓存和一级缓存的区别执行缓存的顺序SqlSession调用过程CachingExecutor的query方法架构MyBatis分为4部分动态代理(MapperProxy)SQL会话(SqlSession.原创 2021-09-05 17:22:04 · 917 阅读 · 0 评论