MyBatis-HotSwap, MyBatis熱部署


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
===========================================================================================================

趕緊試試吧!






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM