前言越来越多的公司在正式的生产环境中使用MyBatis。我认为它受欢迎的原因是大多数项目都是面向表的。对于结构化编程,Java对象只是作为数据容器,查询和模型变化都设计在一张表上。所谓业务逻辑就是一堆增删改查的sql集合,所以Mybatis用起来很方便。为什么要学习MyBatis?除了我上面说的MyBatis在国内非常流行之外,还有以下几点:①学好MyBatis可以帮助我们解决数据层开发的问题;②MyBatis源码中有很多设计模式和并发编程技巧,学好源码对提高编码能力很有帮助;③最后,Mybatis源码也是大厂面试中经常被问到的一个点。基于以上情况,本次分享阿里p8私藏的MyBatis笔记,帮助大家由浅入深学习MyBatis相关知识,享受源码细节,让开发者不仅知其然是的,但也知道为什么会这样。注:由于内容较多,本次将展示部分内容。如果阅读不满足,想在深入了解本笔记本中了解MyBatis的底层原理,可以【直接点这里】获取!!这篇文章分为两部分,但我想打破常规。首先给大家展示一下源码,然后再给大家展示一下MyBatis的整体学习内容。bb不多,我就直接上了。A:精炼MyBatis源码分析-总体架构①总体架构项目结构总体架构基础支撑层核心处理层接口层B:精炼MyBatis源码分析-基础支撑层①基础支撑层解析器模块反射模块异常模块数据源模块事务moduleCacheModuleTypeModuleIOModuleLogModuleAnnotationModuleBindingModuleC:精炼MyBatis源码分析——MyBatis初始化(一)加载mybatis-config。-MyBatis初始化(二)加载Mapper接口和XML映射文件①MyBatis初始化②初始化(二)加载Mapper接口和映射文件分析入口MapperAnnotationBuilderXMLMapperBuilderXMLStatementBuilderMapperBuilderAssistantRequestMappingResultMapMappedStatementE:进阶MyBatis源码解析-MyBatis初始化(三)SQL初始化(上篇)①MyBatis初始化②初始化(三)SQL初始化(一)LanguageDriverXMLScriptBuilderNodeHandlerDynamicContextSqlNodeOgnlCacheF:精炼MyBatis源码分析(四)SQL初始化(二)①MyBatis初始化②初始化(四)SQL初始化(二)SqlSourceBuilderParameterExpressionParameterMappingSqlSourceBoundSqlDefaultGParameter:精炼MyBatis源码分析-SQL执行流程(一)Executor①MyBatisSQL执行流程②SQL执行流程(一)ExecutorExecutorBaseExecutorSimpleExecutorReuseExecutorBatchExecutor二级缓存ExecutorExecutor是在哪里创建的H:详尽的MyBatis源码分析-SQL执行过程(二)之StatementHandler①MyBatis的SQL执行过程②SQL执行过程(二)之StatementHandlerStatementHandlerRoutingStatementHandlerBaseStatementHandlerSimpleStatementHandlerPreparedStatementHandlerCallableStatementHandlerKeyGeneratorJdbc3KeyGeneratorSelectKeyGeneratorNoKeyGeneratorI:精尽MyBatis源码分析-SQL执行过程(三)之ResultSetHandler①MyBatis的SQL执行过程②SQL执行过程(三)之ResultSetHandlerResultSetWrapperResultSetHandlerDefaultResultSetHandlerJ:精尽MyBatis源码分析-SQL执行过程(四)之延迟加载①MyBatis的SQL执行过程②SQL执行过程(四)之延迟加载ResultLoaderResultExtractorResultLoaderMapProxyFactoryJavassistProxyFactoryCglibProxyFactoryK:精尽MyBatis源码分析-SqlSession会话与SQL执行入口①SqlSession会话与SQL执行入口SqlSessionFactoryBuilderDefaultSqlSessionFactoryDefaultSqlSessionMapperMethodO:精DoMyBatisSourceCodeAnalysis-Plug-inMechanism①Plug-InMechanismImplantingPlug-inLogicalPaginationPlug-inExampleInterceptorInvocationPluginInterceptorChainP:ExhaustiveMyBatisSourceCodeAnalysis-MyBatis-SpringSourceCodeAnalysis①ConfigurationExample②SqlSessionFactoryBean③MapperFactoryBean④SqlSessionDaoSupport⑤MapperScannerConfigurerClass⑥PathMapperScanner⑦@MapperScanNotesbatis:scan/>标签⑨SqlSessionTemplate⑩SqlSessionHolder?SqlSessionUtils?SqlSessionSynchronizationQ:精尽MyBatis源码分析-Spring-Boot-Starter源码分析①配置示例②MybatisProperties③SpringBootVFS④MybatisAutoConfiguration⑤构造方法afterPropertiesSet方法sqlSessionFactory方法sqlSessionTemplate方法MapperScannerRegistrarNotFoundConfigurationAutoConfiguredMapperScannerRegistrar⑥spring.factories文件A:MyBatis快速入门为什么需要ORM框架?MyBatisquickstartB:MyBatisdevelopmentpointsEasytograspthekeypoints,youwillclearlyknow:①IsitresultTypeorresultMap?②Howtopassmultipleparameters?③Howtogettheprimarykey?④UnderstandSQLelementsandSQLparameters,dynamicSQL,codegenerator,relationalquery,cacheandotherknowledgeC:MyBatissourcecodeoverviewPreliminaryexplorationofthesourcecode,pavethewayforfurtherstudyofMyBatissourcecodeinthefuture,fromhereyouwilllearn:①HowtodownloadMyBatissourcecode②Sourcecodearchitectureanalysis③Appearancemode(facademode)④Sixdesignprinciplesthatobject-orienteddesignneedstofollowD:LogmoduleanalysisComponentshavetheirownLoglevels,andtheyaredifferent,butMyBatisprovidesfourlevelsoftrace,debug,warn,anderror.Therefore,youneedtomasterthefollowing5points:①Logmodulerequirementanalysis②Adaptermode③Howtoachievepriorityloadingoflogcomponents?④Proxymodeanddynamicproxy⑤ElegantenhancedlogfunctionE:DatasourcemoduleanalysisThedatasourcemodulefocusesonthecreationofdatasourcesandthesourcecodeanalysisofdatabaseconnectionpools;thecreationofdatasourcesismorecomplicated,andyoucanconsiderusingitforthecreationofcomplexobjectsFactorypatterntooptimize.本章主要介绍以下四点:①简单工厂模式②工厂模式③数据源创建④数据库连接池技术分析F:缓存模块分析①MyBatis缓存模块需要满足以下要求:MyBatis缓存的实现是基于Map,读写来自缓存的数据是缓存模块的核心基础功能;除了核心功能外,还有很多额外的附加功能,比如:防止缓存崩溃,增加缓存清空策略(fifo,lru),序列化功能,以及日志记录能力,定时清空能力等;附加功能可以任意组合添加到核心基本功能中。基于Map的核心缓存能力,优雅地增强阻塞、清除策略、序列化、日志等任意组合的能力,是Mybatis缓存模块最大的难题。通过动态代理或继承的方式扩展多种附加能力是传统。该方法存在以下问题:这些方法是静态的,用户无法控制添加行为的方法和时机;此外,新功能组合较多,使用继承可能会导致大量子类的存在。综上所述,MyBtis缓存模块采用了装饰器模式来实现缓存模块。②装饰器模式③缓存模块中装饰器的使用④缓存的唯一标识CacheKeyG:反射模块分析与MyBatis进程第一阶段:配置加载阶段①构建器模式构建器模式和工厂模式有什么区别②配置加载的核心类构建器的三个核心类都是关于Configuration对象③配置加载过程第二阶段:代理封装阶段①Mybatis接口层SqlSession策略模式SqlSessionFactory②绑定模块分析绑定模块核心类绑定模块运行过程第三阶段:数据访问阶段①关于Executor组件②Executor中的模板模式③Executor的三个重要小弟④关于StatementHandler⑤关于ResultHandler和spring的结合原理①什么是MyBatis-Spring?③责任链模式④插件模块源码分析及获取方法:需要这个阿里技术官的私人收藏《MyBatis笔记》可以直接点这里获取!!!
