一、单数据源
一个数据源时直接在 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(s);
}
@Override
public void trace(String s) {
}
@Override
public void warn(String s) {
System.out.println("mybatis warn");
System.out.println(s);
}
}
二、mybatis配置多个数据源
只需要在多数据源中的一个配置类中增加如下配置即可
@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();
}
}