今天就跟大家聊聊有关什么是Mybatis Excu 香港云主机ter框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在BaseExecutor定义了Executor的基本实现,如查询一级缓存,事务处理等不变的部分,操作数据库等变化部分由子类实现,使用了模板设计模式,下面我们来看下查询方法的源码:queryFromDatabase() 方法中,我们可以看到doQuery使用的是模板方法,具体逻辑是由子类来实现的,这样做的好处是,子类只关心程序变化的部分,其他不变的部分由父类实现。提高了代码的复用性和代码的扩展性。普通的执行器,Mybatis的默认使用该执行器,每次新建Statement。我们还是来看下查询方法的源码:通过 stmt = handler.prepare(connection, transaction.getTimeout());
方法我们可以看出每次是新建Statement
。可以重用的执行器,复用的是Statement,内部以sql语句为key使用一个Map将Statement对象缓存起来,只要连接不断开,那么Statement就可以重用。因为每一个新的SqlSession都有一个新的Executor对象,所以我们缓存在ReuseExecutor上的Statement的作用域是同一个SqlSession,所以其实这个缓存用处其实并不大。我们直接看下获取Statement
源码,其他部分和SimpleExecutor
查询方法一样。批处理执行器,通过封装jdbc的 statement.addBatch(String sql) 以及 statement.executeBatch(); 来实现的批处理。该执行器的事务只能是手动提交模式。我们平时执行批量的处理是一般还可以使用sql拼接的方式。执行批量更新时建议一次不要更新太多数据,如果更新数据量比较大时可以分段执行。如果开启了二级缓存那么Mybatis会使用CachingExecutor
执行器,CachingExecutor
使用了装饰器模式。通过源码我们发现,整个查询流程变成 了 L2 -> L1 -> DB。CachingExecutor
的查询流程,增加了二级缓存的查询操作。我们在实际使用缓存过程中一般很少使用Mybatis的二级缓存,如果想做二级缓存,建议直接在service层面使用第三方缓存框架,推荐使用为监控而生的多级缓存框架 layering-cache,使用更方便灵活,查询流程是 L1 -> L2 -> DB。BaseExecutor:使用了模板方法模式,定义了Executor的基本实现,它是一个抽象类,不能直接对外提供服务。SimpleExecutor:普通的执行器,Mybatis的默认使用该执行器,每次新建Statement。ReuseExecutor:可以重用Statement的执行器,但是这个Statement缓存只在一次SqlSession中有效,我们平时生少有在一次SqlSession中进行多次一样的查询操作,所以性能提升并不大。BatchExecutor:批处理执行器CachingExecutor:二级缓存执行器,使用装饰器模式,整个查询流程变成 了 L2 -> L1 -> DB。建议直接使用第三方缓存架,如:为监控而生的多级缓存框架 layering-cache。看完上述内容,你们对什么是Mybatis Excuter框架有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注开发云行业资讯频道,感谢大家的支持。
这篇“CSS3如何控制HTML元素动画效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“CSS3如何控制HTML元素动画效果”文章吧。1.对元素…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。