mybatis熱加載的實現


最近在使用mybatis,由於是剛剛開始用,用的並不順手,目前是感覺有2個地方非常的不好用:

1、mybatis調試不方便

  由於dao層只有接口,實現只是一個map的xml文件,想加斷點都沒有地方加,直接導致的后果就是有時候出錯了,完全是各種閉眼嘗試,抓狂中。。。倒是可以把調試級別改成debug,會把執行的sql,以及參數都輸出到控制台,可是一改成debug,那控制台輸出的內容,就實在多到讓人發指,甚至都會影響到代碼的編寫及調試,而且輸出日志跟打斷點調試根本就不是一個級別的。目前仍舊無法解決改問題。

 

2、mybatis改sql要不停的重啟服務

  這個真心不能忍,map文件在系統重動后,map文件只加載一次,再修改map文件就不會生效了,如果要生效,就需要不停的重啟服務。

  后來找到一個辦法,就是使用Mybatis-Plus插件。

  

Mybatis-Plus插件的用法:

1、pom.xml的內容:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.1</version>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>
        
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>1.5</version>
    <scope>system</scope>
    <systemPath>${lib.dir}/mybatis-plus-1.5.jar</systemPath>
</dependency>

我這里是本地引的包,因為看Mybatis-Plus插件官網的說法,就是添加Mybatis-Plus插件會添加mybatis的依賴包,我已經引過mybatis的包了,不想讓他再給我引了。

Mybatis-Plus插件的地址:http://mvnrepository.com/artifact/com.baomidou/mybatis-plus/1.5

 

然后修改spring的配置文件:

修改前:

 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dynamicDataSource" />
  <!-- 加載mybatis主配置文件 -->
  <property name="configLocation" value="classpath:conf/mybatis-config.xml"></property>
  <!-- 自動掃描mapping.xml文件 -->
  <property name="mapperLocations"
   value="classpath:com/huarui/mapping/${jdbc.dialect}/*.xml"></property>
 </bean>

 

修改后:

    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dynamicDataSource" />
        <!-- 加載mybatis主配置文件 -->
        <property name="configLocation" value="classpath:conf/mybatis-config.xml"></property>
        <!-- 自動掃描mapping.xml文件 -->
        <property name="mapperLocations"
            value="classpath:com/huarui/mapping/${jdbc.dialect}/*.xml"></property>
    </bean>
    
    <bean class="com.baomidou.mybatisplus.spring.MybatisMapperRefresh">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
        <constructor-arg name="mapperLocations" value="classpath:com/huarui/mapping/${jdbc.dialect}/*.xml"/>
        <constructor-arg name="delaySeconds" value="5"/>
        <constructor-arg name="sleepSeconds" value="10"/>
        <constructor-arg name="enabled" value="true"/>
    </bean>

 

修改后,改sql就會自動熱加載了,其實也不是實時加載,原理是每隔一個時間刷新一下map,我這里設置的是delaySeconds是5秒,sleepSeconds是10秒。


免責聲明!

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



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