一文搞懂Mybatis插件原理 (一文搞懂门诊、住院和医保三大目录)
本文目录导航:
一文搞懂Mybatis插件原理
Mybatis插件原理详解,让你轻松成功自定义性能在深化Mybatis源码时,你或者会遇到名为plugin的包,这实践上用于裁减框架的性能,如PageHelper分页插件。
本文将提醒插件的运作机制,教你如何了解其外部上班并自行成功,如分页或慢SQL统计。
经常使用PageHelper插件分页的方便步骤是:一,在中参与依赖;二,在中性能插件;三,在须要分页的mapper接口前调用startPage方法,并确保每次查问后封锁Page对象以防止数据抵触。
接上去,咱们将探求插件的总体流程:首先,经过阻拦器接口成功灵活代理,如PageInterceptor,它会在Executor的query方法口头前后参与自定义逻辑。
阻拦器经过Invocation对象失掉指标对象和方法参数,成功增强性能。
分页阻拦器如PageInterceptor阻拦query方法,若须要分页,会失掉原始SQL并参与limit语句。
性能插件时,在中参与相应阻拦器,如``标签和Interceptor成功类的全限定名。
当咱们创立SqlSession时,阻拦器经过Configuration的newExecutor方法注册并运行到Executor对象上,应用JDK灵活代理生成增强的代理对象,从而在口头SQL时调用阻拦器的intercept方法。
自定义慢SQL统计插件雷同基于Interceptor,只有性能指标对象为StatementHandler,阻拦方法为query、update或batch,而后在性能文件中参与插件的全限定名。
架构(九)Mybatis灵活数据源及其原理
Mybatis灵活数据源及其成功原理
在最近的名目中,我遇到了须要灵活注入数据源和在运转时切换数据库的需求。
本文将分享成功战略和Mybatis的原理。
首要义务是成功灵活数据源,这象征着数据库性能须要存储在性能中心,以允许灵敏参与。
一种经常出现做法是将每个数据库性能成独自的性能类,但这样每次参与数据库就须要颁布,并且类门路治理复杂。
思考到平台大局部数据库操作相似,我选用将数据源置于汇合,仅经过性能变化即可参与新库。
切换数据库通常经过AOP或阻拦器成功,Mybatis提供了相关工具,简化了这一环节。
成功步骤原了解析
设计上,关键点在于数据库消息的存储和链接建设。
Mybatis在查问时,会从本地缓存失掉数据库消息,依据lookupKey选用衔接。
在事务中,Mybatis会确保每次查问都经常使用独立的衔接,防止并发疑问。
详细成功如下:在查问逻辑中,Mybatis依据lookupKey从缓存中失掉数据库消息,假设衔接不存在,会开启新衔接。
须要留意,假设在事务中切换数据库,Mybatis会检测以后链接能否为null,以处置衔接复用的状况。
本文详细引见了如何经常使用Mybatis成功灵活数据源的性能和切换,以及相关原理。
如有不懂,欢迎在评论区交流。
书面语化解说Spring、Mybatis
本文以书面语化的格调,总结了Spring和Mybatis的关键常识点,旨在协助读者极速回忆和了解Spring框架的IOC、DI、Bean、AOP以及Mybatis的运转原理、组件等内围内容。
以下是对相关常识点的详细解析。
**Spring的IOC和DI**:IOC,即控制反转,象征着将Bean的创立、性能和销毁责任交给Spring容器治理,经过依赖注入(DI)将外部资源注入到程序对象中,成功了对象间依赖的松耦合。
**BeanFactory、FactoryBean、ApplicationContext的区别**:BeanFactory是Spring容器的基础接口,提供基本的Bean治感性能;ApplicationContext则在其基础上参与了预加载性能,更适宜作为运行高低文经常使用;FactoryBean用于生成复杂对象,配合Aware接口成功更复杂的操作。
**@Component和@Bean的区别**:@Component用于标志类为组件,而@Bean则用于在容器中注册Bean实例,二者联合使得组件的治理愈加灵敏。
**Spring允许的五种Bean作用域**:Spring允许单例(Singleton)、原型(Prototype)、恳求(Request)、会话(Session)和全局(Global)作用域,区分对应不同的生命周期治理。
**Bean生命周期**:从Bean容器加载到实例化,再到属性赋值和初始化,最后销毁,触及多个关键步骤。
成功Aware接口和BeanPostProcessor接口可在此环节中口头自定义逻辑。
**Spring为何须要三级缓存处置循环依赖**:Spring的三级缓存(一级缓存、二级缓存、三级缓存)区分用于存储不同形态的Bean实例,经过预加载和循环依赖处置战略,确保Bean的正确创立和初始化。
**Spring设计形式**:工厂设计形式用于创立Bean,代理设计形式在AOP中成功灵活代理,单例设计形式确保Bean的惟一性,模板方法形式在操作类中成功通用逻辑,包装器设计形式灵活切换数据源,观察者形式用于事情驱动模型,适配器形式用于增强接口。
**AOP原理**:Spring经过灵活代理(JDK代理或Cglib代理)成功AOP,灵活代理分为静态和灵活两种,经过代理形式增强对象的性能。
**事务治理**:Spring允许编程式和申明式事务治理,申明式事务经过注解成功,愈加灵敏,而编程式事务则提供更细粒度的控制。
Spring事务的流传行为包含:REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED_TRANSACTION。
**隔离级别**:Spring自动经常使用数据库的隔离级别,提供READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE等选项,确保事务的正确口头。
**Spring MVC恳求处置流程**:Spring MVC包含HandlerMapping、HandlerAdapter、HandlerExceptionResolver、ViewResolver等组件,从恳求婚配Handler、处置恳求、解析视图、渲染视图等流程,成功了恳求的高效处置。
**MyBatis重要成员**:MyBatis由SqlSessionFactory、SqlSession、StatementHandler、ParameterHandler、ResultSetHandler等内围组件组成,提供SQL映射、灵活SQL生成缓和存机制。
**MyBatis上班原理**:#{}预编译处置,${}字符串交流,前者防止SQL注入,提高安保性。
count(1)、count(*)和count(列名)区分用于统计行数,思考NULL值的不同处置。
**MyBatis的口头器**:有SimpleExecutor、ReuseExecutor和BatchExecutor三种口头器,区分实用于不同的口头场景,提供提升的SQL口头效率。
**分页插件的原理**:经过自定义插件成功分页性能,重写SQL以成功分页查问,如经过LIMIT或OFFSET成功分页结果的失掉。
**MyBatis灵活SQL**:经常使用标签成功灵活SQL生成,依据条件灵活拼接SQL语句,提高SQL的灵敏性和顺应性。
**缓存机制**:MyBatis提供一级缓存和二级缓存,区分针对Session和命名空间,经过缓存缩小数据库查问,提高系统性能。
**MyBatis与全智能ORM的区别**:MyBatis须要手动编写SQL,成功对象相关映射,而Hibernate等工具能够智能成功映射,提供更智能化和方便的开发体验。
**提前加载**:MyBatis允许关联对象的提前加载,经过CGLIB创立代理对象,依据实践须要加载关联数据,成功高效的数据访问。
经过以上详细解析,读者能够对Spring和Mybatis的外围概念、设计形式和关键机制有更深化的了解,为实践名目开发提供有力的实践允许。