MyBatis-HotSwap, MyBatis热部署
https://github.com/xiaochenxinqing/MyBatis-HotSwap
https://github.com/xiaochenxinqing/MyBatis-HotSwap
##################Mybatis的XMl文件热加载解决方案################
作者:尹晓晨
##前言:Mybatis有注解、xml文件两种写sql语句的方式。在xml文件中可以写sql语句,方式更灵活,也更方便维护,但是这种方式有一个缺陷就是无法被热部署,即使强大的jrebel插件也没能解决。每当改写sql语句就要重启服务器令开发者头疼不已。
现根据网上的方案做了整合,改了其中的一些bug,亲测非常好用, 若满意请star下谢谢。
##解决办法如下:首先将给出的3个公共文件放入你的项目中:
1: MapperRefresh.java(刷新文件的工具类,修改其中的配置);
/*初始化配置(按个人需要进行修改)*/
private static boolean enabled=true; // 是否启用Mapper刷新线程功能<br>
private static int delaySeconds=1; // 延迟刷新秒数<br>
private static int sleepSeconds=1; // 休眠时间<br>
private static String mappingPath="dao"; // xml文件所在的文件夹名(不带路径),需要根据需要修改<br>
2:SqlSessionFactoryBean(重写的SqlSessionFactoryBean,用来替换掉原来自带的);
3:google-collections-1.0.jar(google的jar包,MapperRefresh.java文件会用到)
(若你的项目为maven项目:
<dependency>
<groupId>com.google.code.google-collections</groupId>
<artifactId>google-collect</artifactId>
<version>snapshot-20080530</version>
</dependency>
)
其他的区别在于你的项目是SpringBoot+Mybatis还是SSM:
一、SpringBoot+Mybatis环境:1:修改你的MyBatisConfig.java文件(即spring配置mybatis的文件),将原来的SqlSessionFactoryBean替换为给出的SqlSessionFactoryBean
2:修改application.yml
mybatis:
typeAliasesPackage: com.hand.**.model
mapperLocations: classpath*:com/hand/**/sqlMap/*Mapper.xml
configLocation: classpath:mybatis-config.xml
二、SSM环境:1: 用重写的SqlSessionFactoryBean,用来替换掉原来自带的即可):
<!-- 配置mybitas SqlSessionFactoryBean-->
<bean id="sqlSessionFactory" class="com.maintainsys.util.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:/com/maintainsys/dao/*Mapper.xml"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
大功告成:若成功,则修改xml文件后控制台会提示类似代码:
===========================================================================================================
- (71775 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:140) 需要被刷新的Mapper文件个数: 1个
- (71789 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:303) refresh key:RepairMapper
- (71792 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:303) refresh key:BaseResultMap
- (71801 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:303) refresh key:insertSelective
- (71803 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:303) refresh key:updateByPrimaryKeySelective
- (71804 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:303) refresh key:updateByPrimaryKeyWithBLOBs
Refresh file: dao\RepairMapper.xml
- (71807 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:194) 成功刷新Mapper文件: E:\AllProjects\maintainsys\target\maintainsys\WEB-INF\classes\com\maintainsys\dao\RepairMapper.xml
- (71807 ms) - 2018-2-27 14:08:14[DEBUG](MapperRefresh.java:195) 被刷新的文件名: RepairMapper.xml
===========================================================================================================
赶紧试试吧!
MyBatis-HotSwap, MyBatis热部署的更多相关文章
- springboot集成mybatis(逆向工程),热部署以及整合Swagger2
本文是作者原创,版权归作者所有.若要转载,请注明出处. springboot集成mybatis和mybatis-generator插件 1.新建Springboot项目(略) 2.导入相关依赖 < ...
- springboot整合mybatis增删改查(二):springboot热部署
SpringBoot整合热部署 传统情况下, 我们用idea运行springboot程序时, 如果我们需要修改类里的方法,或者其他信息 我们需要修改完保存,并且重启springboot,有时候会很浪费 ...
- JAVA热部署,通过agent进行代码增量热替换!!!
在前说明:好久没有更新博客了,这一年在公司做了好多事情,包括代码分析和热部署替换等黑科技,一直没有时间来进行落地写出一些一文章来,甚是可惜,趁着中午睡觉的时间补一篇介绍性的文章吧. 首先热部署的场景是 ...
- SpringBoot+gradle+idea实现热部署和热加载
前言 因为之前使用myeclipes的同学就知道,在使用myeclipes的时候,java文件或者jsp文件写完之后会被直接热加载到部署的容器中,从而在开发的时候,不同经常去重启项目,从而达到了增加开 ...
- SpringBoot03 项目热部署
1 问题 在编写springBoot项目时,经常需要修改代码:但是每次修改代码后都需重新启动,修改的代码才会生效 2 这么实现IDEA能够像Eclipse那样保存过后就可以自动进行刷新呢 将sprin ...
- SpringBoot实现热部署(修改class不需要重启)
热部署: devtools可以实现页面热部署(即页面修改后会立即生效, 这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实 ...
- SpringBoot热部署的实现方式
一:热部署的实现 1.使用Spring-boot-devtools 2.使用Spring Loaded 二:devtools(推荐) 一般情况下直接在pom.xml文件添加下面的依赖即可,但eclip ...
- IDEA 热部署- 自动编译设置
原文:https://www.cnblogs.com/TechSnail/p/7690829.html && https://blog.csdn.net/qq_3129357 ...
- 一分钟搞定:spring boot 热部署 (基于Idea)
什么是热部署? 对于spring boot项目,修改后台的java类,不要重启整个项目,就可以测试/使用刚修改的功能! 怎么为项目添加/设置热部署 maven项目在pom.xml添加下方代码,联网引入 ...
随机推荐
- Linux 文件隐藏属性-创建文件默认权限
Linux特殊权限介绍 # password原本只有root可以访问但是为什么普通用户在修改密码的时候也可以改里面的内容. [root@gong ~]# ll /usr/bin/passwd -rws ...
- 30-- A 代码记录分析
张的代码 30-- -A if(BT_INFO.RX.CACHE == BT_RX_CACHE[0]) { BT_INFO.RX.CACHE = BT_RX_CACHE[1]; } else { B ...
- maven工具使用json-lib时,JSONArray.fromObject()不能执行的解决方案
前端代码我就不展示了 ,下面说明下我遇到问题的情况,如果不想看可以直接划到黄色字体部分直接找解决方法哦~~(相关jar包我会放在云中,想要的自己下载哦,链接在视频最下面!!) 我的pom文件,如下,导 ...
- synchronized使用及java中的原子性问题
1.Synchronized关键字使用 class X { // 修饰非静态方法 synchronized void foo() { // 临界区 } // 修饰静态方法 synchronized s ...
- TVM如何训练TinyML
TVM如何训练TinyML 机器学习研究人员和从业人员对"裸机"(低功耗,通常没有操作系统)设备产生了广泛的兴趣.尽管专家已经有可能在某些裸机设备上运行某些模型,但是为各种设备优化 ...
- GPU核心技术开发
GPU核心技术开发 由于上一节主要阐述GPU内部的工作流程和机制,为了简洁性,省略了很多知识点和过程,本节将对它们做进一步补充说明. 1. CUDA技术 1)NVIDIA CUDA 是什么? NVI ...
- HLS后端示例
HLS后端示例 TVM支持带有SDAccel的Xilinx FPGA板.这是有关如何将TVM部署到AWS F1 FPGA实例的文档. 此功能仍处于试验阶段.暂时无法使用SDAccel部署端到端神经网络 ...
- 24GHz和77GHz毫米波雷达技术细节
24GHz和77GHz毫米波雷达技术细节 FMCW Radar Sensitivity Measurement Tech Field Test and Raw Data Analysis Capabi ...
- Git操作_从github远程仓库克隆到本地仓库, 本地代码提交
实现目的: 从github远程仓库克隆到本地仓库:本地代码提交到远程仓库. 一.从github远程仓库克隆到本地仓库: 命令行切换到指定的仓库想存放的目录,执行如下命令:git clone 远程仓库 ...
- SpringBoot注解 + 详解
可以使用Ctrl + F搜索,也可以右侧目录自行检索 @SpringBootApplication 包含了@ComponentScan.@Configuration和@EnableAutoConfig ...