https://github.com/xiaochenxinqing/MyBatis-HotSwap
 
1
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热部署的更多相关文章

  1. springboot集成mybatis(逆向工程),热部署以及整合Swagger2

    本文是作者原创,版权归作者所有.若要转载,请注明出处. springboot集成mybatis和mybatis-generator插件 1.新建Springboot项目(略) 2.导入相关依赖 < ...

  2. springboot整合mybatis增删改查(二):springboot热部署

    SpringBoot整合热部署 传统情况下, 我们用idea运行springboot程序时, 如果我们需要修改类里的方法,或者其他信息 我们需要修改完保存,并且重启springboot,有时候会很浪费 ...

  3. JAVA热部署,通过agent进行代码增量热替换!!!

    在前说明:好久没有更新博客了,这一年在公司做了好多事情,包括代码分析和热部署替换等黑科技,一直没有时间来进行落地写出一些一文章来,甚是可惜,趁着中午睡觉的时间补一篇介绍性的文章吧. 首先热部署的场景是 ...

  4. SpringBoot+gradle+idea实现热部署和热加载

    前言 因为之前使用myeclipes的同学就知道,在使用myeclipes的时候,java文件或者jsp文件写完之后会被直接热加载到部署的容器中,从而在开发的时候,不同经常去重启项目,从而达到了增加开 ...

  5. SpringBoot03 项目热部署

    1 问题 在编写springBoot项目时,经常需要修改代码:但是每次修改代码后都需重新启动,修改的代码才会生效 2 这么实现IDEA能够像Eclipse那样保存过后就可以自动进行刷新呢 将sprin ...

  6. SpringBoot实现热部署(修改class不需要重启)

    热部署: devtools可以实现页面热部署(即页面修改后会立即生效, 这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实 ...

  7. SpringBoot热部署的实现方式

    一:热部署的实现 1.使用Spring-boot-devtools 2.使用Spring Loaded 二:devtools(推荐) 一般情况下直接在pom.xml文件添加下面的依赖即可,但eclip ...

  8. IDEA 热部署- 自动编译设置

    原文:https://www.cnblogs.com/TechSnail/p/7690829.html    &&   https://blog.csdn.net/qq_3129357 ...

  9. 一分钟搞定:spring boot 热部署 (基于Idea)

    什么是热部署? 对于spring boot项目,修改后台的java类,不要重启整个项目,就可以测试/使用刚修改的功能! 怎么为项目添加/设置热部署 maven项目在pom.xml添加下方代码,联网引入 ...

随机推荐

  1. IDEA 查看类图功能(分析源码的利器)

    引言 做过项目开发的童靴,应该会有这样的经历,就是刚进公司领导二话不说直接丢个项目,而且没有任何文档,让熟悉一下,一两周就让上手写代码.打开项目后就看到一堆类源码,完全不知道从何处入手,应该如何分析项 ...

  2. C++ short/int/long/long long 等数据类型大小

    表 1 整型数据类型 数据类型 字节大小 数值范围 short int (短整型) 2 字节 -32 768 〜+32 767 unsigned short int(无符号短整型) 2 字节 0 〜+ ...

  3. 僵尸进程和孤儿进程-(转自Anker's Blog)

    2.基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当 ...

  4. Apple Xcode 12.5 (12E262) 正式版发布 - 构建 Universal App

    请访问原文链接:https://sysin.org/article/apple-xcode-12/,查看最新版.转载请保留出处. Xcode 12 简介 Xcode 12 采用全新设计,在 macOS ...

  5. Python小白的数学建模课-A1.国赛赛题类型分析

    分析赛题类型,才能有的放矢. 评论区留下邮箱地址,送你国奖论文分析 『Python小白的数学建模课 @ Youcans』 带你从数模小白成为国赛达人. 1. 数模竞赛国赛 A题类型分析 年份 题目 要 ...

  6. [leetcode] 116. 填充同一层的兄弟节点

    116. 填充同一层的兄弟节点 其实就是个二叉树的层次遍历 class Solution { public void connect(TreeLinkNode root) { if (root == ...

  7. 一篇文章弄懂 Java 反射的使用

    说到Java反射,必须先把 Java 的字节码搞明白了,也就是 Class , 大 Class 在之前的文章中,我们知道了Java的大Class就是类的字节码,就是一个普通的类,里面保存的是类的信息, ...

  8. H265与ffmpeg改进开发

    H265与ffmpeg改进开发 1. Introduction KSC265是集编码.解码于一体的H.265编解码软件,完全遵循H.265协议标准.符合H.265编码规范的视频都可以通过KSC265进 ...

  9. Java真的是白天鹅

    前言 我最近越来越真切的感受到,Java真的是白天鹅. 这真的是一种羡慕嫉妒恨的感受. 今天和一个Java技术Leader聊天,我告诉他敏捷开发是以人为本,他居然跟我说敏捷开发在行业内有规范,规范是死 ...

  10. 硬核!2w 字长文爆肝分布式事务知识点!!

    前言 分布式事务,是分布式架构中一个绕不开的话题,而什么是分布式事务?为什么要使用分布式事务?分布式事务有哪些实现方案?更是面试时面试官特别喜欢的一个分布式三连炮!同时用XMind画了一张导图记录分布 ...