1.一个类实现Mybatis的SQL热更新
一个类实现Mybatis的SQL热更新
引言
在使用SpringBoot+Mybatis开发项目时,若项目较大且启动时间较长,则每次修改Mybatis中的SQL都需要重启项目,这不仅消耗时间,还可能打断代码思路,降低开发效率。蚌埠麻将源码是否存在无需重启服务即可实时更新Mybatis配置的方法?答案是肯定的。本文将通过实践证明,修改SQL后无需重启服务,即可实现Mybatis配置的热更新。
首先思考三个问题:如何实现Mybatis的SQL热更新?实现流程是什么?需要如何使用?
源码与实现流程
Mybatis的SQL热更新实现流程如图所示。通过一个类即可实现,下文将详细解析其原理。
使用指南
在application.properties文件中添加如下配置,即可开启Mybatis 访问遮罩跳转源码Mapper的热更新。如未配置或配置值为false,则不开启热更新。
实现原理
理解Mybatis动态SQL的实现原理是关键。Mybatis利用XML配置和JDK动态代理技术增强Mapper接口,实现了编写接口和SQL操作数据库的功能,简化了JDBC相关的复杂操作。
Mybatis何时读取XML配置?配置存储在哪里?要实现热更新,linux 源码在线查看只需重新加载一次XML配置是否足够?
如何重新加载配置
Mybatis加载所有配置至Configuration类中,在项目启动时,SqlSessionFactoryBuilder会读取Mybatis XML配置。其中,MappedStatements用于保存Mapper XML中的SQL语句。
项目启动时,加载的源码层次解耦配置包括mappers标签、properties、settings、plugins和environments等。重点关注mappers是如何加载的。
mappers配置有四种类型:resource、package、url和jar。手机版源码编辑本文采用resource方式。
总结,Mybatis将业务SQL通过XML配置路径加载至Configuration的mappedStatements映射中。因此,重载Mybatis配置只需更新mappedStatements相关数据即可。如何实现?使用与Mybatis源代码加载方式一致的方法。
重载哪些配置
要了解需要重载的配置,查看Mybatis源码中加载mappers的处理流程。首先判断资源是否已解析,若解析则不再解析,需要重载,因此需要重载Configuration的loadedResources属性。
关键代码分析:如果资源已被解析,将不再重新解析。需要重载的配置包括loadedResources、mappers、settings等。除了loadedResources集合,其他配置都是映射属性。
MapperHotSwap解析
再次回顾流程图,解释MapperHotSwap的实现原理。热更新初始化、读取Mybatis Mapper配置、开启异步线程定时执行SQL热更新和清除上一次加载的Mapper XML配置项。清除配置项是为了避免Mybatis误认为XML已加载过,从而不执行重载操作。
实践证明,通过此方法,修改SQL后无需重启服务,即可实现Mybatis配置的实时更新,简化了开发流程,提高了开发效率。
2024-12-28 21:042619人浏览
2024-12-28 20:241473人浏览
2024-12-28 20:11572人浏览
2024-12-28 20:052530人浏览
2024-12-28 19:32517人浏览
2024-12-28 18:512462人浏览
中国消费者报北京讯记者贾珺)8月7日,北京市市场监管局公布了2023年度安全生产执法专项“筑安”行动5起典型案例,其中巨人通力电梯有限公司北京分公司作为负有责任的单位发生一般特种设备事故的行为,被处以
美國商務部26日公布的最終修正數據顯示,今年第二季度美國實際國內生產總值GDP)按年率計算增長3%,與此前公布的修正數據持平。美國第二季度經濟增速修正終值為3%。圖為行人走過美國首都華盛頓的一家蘋果門
中国消费者报南宁讯杨帆记者顾艳伟)面对近日广西疫情防控形势,广西来宾市市场监管局把保民生放在首位,在辖区各大商超、农贸市场等领域开展价格检查执法行动,严厉打击哄抬物价等违法行为,着力打好保供稳价 “组