SpringBoot + Mybatis 多数据源配置打印SQL失效问题(mybatis.configuration.log-impl)

一、单数据源
一个数据源时直接在 application.yaml 文件中增加如下配置即可实现sql日志的打印

mybatis:
    configuration:
        map-underscore-to-camel-case: true
        log-impl: com.ylx.apis_plugin_supervise.config.mybatis.log.MybatisLogCustom

MybatisLogCustom 类为自定义的SQL打印配置类

import org.apache.ibatis.logging.Log;

public class MybatisLogCustom implements Log {

    public MybatisLogCustom(String clazz) {
    }

    @Override
    public boolean isDebugEnabled() {
        return true;
    }
    @Override
    public boolean isTraceEnabled() {
        return true;
    }
    @Override
    public void error(String s, Throwable e) {
        System.err.println(s);
        e.printStackTrace(System.err);
    }
    @Override
    public void error(String s) {
        System.out.println("mybatis error");
        System.err.println(s);
    }
    @Override
    public void debug(String s) {
        // System.out.println("mybatis debug");

        // 放开注释,打印 mybatis执行sql
        System.out.println(s);
    }
    @Override
    public void trace(String s) {
        // System.out.println("mybatis trace");

        // 放开注释,打印 mybatis执行sql的返回结果
        // System.out.println(s);
    }
    @Override
    public void warn(String s) {
        System.out.println("mybatis warn");
        System.out.println(s);
    }
}

二、mybatis配置多个数据源
只需要在多数据源中的一个配置类中增加如下配置即可

// 多数据源配置类中增加 Configuration
@Bean
@ConfigurationProperties(prefix = "mybatis.configuration")
public org.apache.ibatis.session.Configuration globalConfiguration() {
    return new org.apache.ibatis.session.Configuration();
}

// 在其中一个数据源中增加如下代码即可,不需要在所有数据源配置中都增加
sessionFactoryBean.setConfiguration(configuration);

具体参考:

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
@MapperScan(basePackages = "com.ylx.apis_plugin_supervise.mybatis.ubkplugin.dao",sqlSessionFactoryRef = "ubkpluginSqlSessionFactory")
public class UbkPluginDataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "mybatis.configuration")
    public org.apache.ibatis.session.Configuration globalConfiguration() {
        return new org.apache.ibatis.session.Configuration();
    }

    @Primary
    @Bean(name = "ubkpluginDataSource")
    @ConfigurationProperties("spring.datasource.ubkplugin")
    public DataSource masterDataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "ubkpluginSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("ubkpluginDataSource") DataSource dataSource,
                                               org.apache.ibatis.session.Configuration configuration) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);

        sessionFactoryBean.setConfiguration(configuration);

        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/ubkplugin/*.xml"));
        return sessionFactoryBean.getObject();
    }
}

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WD技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值