zoukankan      html  css  js  c++  java
  • 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秒。

  • 相关阅读:
    简单好用的日历排期控件
    Ext.js create store
    Ext.js页面添加元素
    Ext.js Tree
    前端设计的七大法则
    如何写软件开发相关文档,它包含哪些种类和内容
    行内文字末尾下降
    正则表达式
    滚动加载数据
    location.hash来保持页面状态
  • 原文地址:https://www.cnblogs.com/modou/p/6131354.html
Copyright © 2011-2022 走看看