SpringBoot集成MyBatis,使用log4j2不打印SQL语句的问题

1、问题描述

之前使用定义mapper接口的方式来访问数据库,只可以正常打印SQL语句的,但是最近换成了SqlSessionTemplate直接操作数据,日志不打印SQL语句了

log4j2配置如下:

<!-- 数据库操作日志 -->

<logger name="com.summer.msp.core.dao" level="TRACE"

additivity="false">

<appender-ref ref="CONSOLE" />

<appender-ref ref="ROLLING_FILE" />

</logger>

application.properties的配置如下:

#mybatis配置

mybatis.mapper-locations=classpath*:mapper/*.xml

#开启mybatis数据库字段带下划线,映射支持java类属性驼峰命名

mybatis.configuration.map-underscore-to-camel-case=true


2、解决办法

1、在src/main/resources/目录下新增mybatis-config.xml配置文件,配置logImpl为LOG4J2 ,将mybatis的日志打印工作交给LOG4J2 来处理:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

<!-- 数据库模式名 -->

<properties>

<property name="msp" value="msp" />

</properties>

<settings>

<!-- 设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false -->

<!-- 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn

的类似映射。 -->

<setting name="mapUnderscoreToCamelCase" value="true" />

<!-- 全局映射器启用缓存 -->

<setting name="cacheEnabled" value="false" />

<!-- 查询时,关闭关联对象及时加载以提高性能 -->

<setting name="lazyLoadingEnabled" value="false" />

<!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 -->

<setting name="aggressiveLazyLoading" value="true" />

<!-- 对于位置的SQL查询,允许返回不同的结果集以达到通用的效果 -->

<setting name="multipleResultSetsEnabled" value="true" />

<!-- 允许使用列标签代替列名 -->

<setting name="useColumnLabel" value="true" />

<!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值), 数据表的pk生成策略将被覆盖 -->

<setting name="useGeneratedKeys" value="true" />

<!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->

<setting name="autoMappingBehavior" value="PARTIAL" />

<!-- 对于批量更新操作缓存SQL以提高性能 -->

<setting name="defaultExecutorType" value="REUSE" />

<!-- 数据库超过25000秒仍未响应则超时 -->

<setting name="defaultStatementTimeout" value="25000" />

<!-- 指定 MyBatis 增加到日志名称的前缀。 -->

<setting name="logPrefix" value="baseDao." />

<!-- 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING -->

<setting name="logImpl" value="LOG4J2" />

</settings>

</configuration>


2、在application.properties配置文件中引用mybatis-config.xml配置文件,如下:#mybatis配置

mybatis.mapper-locations=classpath*:mapper/*.xml

mybatis.config-location=classpath:mybatis-config.xml


3、修改log4j2-spring.xml配置文件:

<!-- 数据库操作日志过滤 -->

<logger name="baseDao" level="TRACE"

additivity="false">

<appender-ref ref="CONSOLE" />

<appender-ref ref="ROLLING_FILE" />

</logger>


Ok!完美解决sql日志打印问题!!!


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容