zoukankan      html  css  js  c++  java
  • MyBatisPlus环境下使用MyBatis的配置类

    			<div class="article">
    
    				<p>通过@<a name="baidusnap0"></a><b style="color:black;background-color:#ffff66">Configuration</b>使用MyBatis配置类的资料比较少,大部分都是通过XML的形式。找了好久,最终还是通过官方的文档找到了解决方法:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/</p>
    

    Using a ConfigurationCustomizer
    The MyBatis-Spring-Boot-Starter provide opportunity to customize a MyBatis configuration generated by auto-configuration using Java Config. The MyBatis-Spring-Boot-Starter will search beans that implements the ConfigurationCustomizer interface by automatically, and call a method that customize a MyBatis configuration. (Available since 1.2.1 or above)

    For example:

    // @Configuration class
    @Bean
    ConfigurationCustomizer mybatisConfigurationCustomizer() {
      return new ConfigurationCustomizer() {
        @Override
        public void customize(Configuration configuration) {
          // customize ...
        }
      };
    }

    但是如果你用了MyBatisPlus的话,以上代码就可能会失效,打断点也进不来。我是看了近半小时的源代码才偶然发现问题所在。MybatisPlusAutoConfiguration类的sqlSessionFactory方法中有一段代码:

    MybatisConfiguration configuration = this.properties.getConfiguration();
    if (configuration == null && !StringUtils.hasText(this.properties.getConfigLocation())) {
        configuration = new MybatisConfiguration();
    }
    if (configuration != null && !CollectionUtils.isEmpty(this.configurationCustomizers)) {
        for (ConfigurationCustomizer customizer : this.configurationCustomizers) {
            customizer.customize(configuration);
        }
    }

    我们可以看到这段代码标红的地方就是通过ConfigurationCustomizer获取自定义配置,初看这代码也没什么问题,但是为什么自己写的mybatisConfigurationCustomizer会失效呢?关键就在ConfigurationCustomizer,这里引用的是MyBatisPlus自定义的一个和MyBatis同名的接口,com.baomidou.mybatisplus.spring.boot.starter.ConfigurationCustomizer,因此必须使用MyBatisPlus的ConfigurationCustomizer才行,修改后代码:

    import org.apache.ibatis.type.JdbcType;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    

    import com.baomidou.mybatisplus.spring.boot.starter.ConfigurationCustomizer;

    @Configuration
    public class MyBatisPlusConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
    	return new ConfigurationCustomizer() {
    		@Override
    		public void customize(org.apache.ibatis.session.<b style="color:black;background-color:#ffff66">Configuration</b> <b style="color:black;background-color:#ffff66">configuration</b>) {
    			<b style="color:black;background-color:#ffff66">configuration</b>.setCacheEnabled(true);
    			<b style="color:black;background-color:#ffff66">configuration</b>.setMapUnderscoreToCamelCase(true);
    			<b style="color:black;background-color:#ffff66">configuration</b>.setCallSettersOnNulls(true);
    			<b style="color:black;background-color:#ffff66">configuration</b>.setJdbcTypeForNull(JdbcType.NULL);
    		}
    	};
    }
    

    }

    完美运行。

    原文地址:http://www.yyjjssnn.cn/articles/839.html

查看全文
  • 相关阅读:
    UNIX高级环境编程(2)FIle I/O - 原子操作、共享文件描述符和I/O控制函数
    UNIX高级环境编程(1)File I/O
    排序算法(2) 堆排序 C++实现
    加深一下BlockingQueue的认识
    测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
    java中的锁
    Http状态码之:301、302重定向
    学点HTTP知识
    java中的字符串相关知识整理
    在Openfire上弄一个简单的推送系统
  • 原文地址:https://www.cnblogs.com/jpfss/p/10731207.html
  • Copyright © 2011-2022 走看看