在我的项目中我有
<bean id="ABCSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ABCDataSource" />
<property name="mapperLocations">
<list>
<value>classpath:com/myco/dao/XYZMapper.xml</value>
</list>
</property>
<bean>
和
log4j.logger.java.sql.Connection=debug, stdout, abclog
log4j.logger.java.sql.PreparedStatement=debug, stdout, abclog
log4j.logger.java.sql=debug, stdout, abclog
log4j.logger.org.mybatis=debug, stdout, abclog
log4j.logger.org.apache.ibatis=debug, stdout, abclog
我在日志中运行applicartion时没有看到SQL查询 想知道我错过了什么
看过这篇文章how to configure log4j for Mybatis to print my SQL 建议更改mybatis类配置但不确定如何处理spring SqlSessionFactoryBean
答案 0 :(得分:6)
您可以通过mybatis-config.xml为Mybatis添加日志记录。
像这样添加log4j:
<强>的MyBatis-config.xml中强>
<configuration>
<settings>
...
<setting name="logImpl" value="LOG4J"/>
...
</settings>
</configuration>
然后在log4j.properties中,添加您要记录的类:
log4j.logger.org.mybatis.example.MyMapper=TRACE
在DEBUG级别记录SQL语句,因此将输出设置为DEBUG:
log4j.logger.org.mybatis.example=DEBUG
有关详细信息,请参阅documentation。
答案 1 :(得分:5)
引用how to configure logback for Mybatis to print my SQL的答案,我不确定这是否适合您。它提供了用于日志记录的Spring配置。这种方法对我有用。
记录特定mybatis映射器集DEBUG的SQL语句(TRACE 完全查看记录器的查询参数和结果的级别 合格的映射器名称
<logger name="com.mycompany.myapp.mapper.MyMapper" level="DEBUG"/>
如果它们位于,则可以记录所有映射器中的所有SQL语句 像这样的包
<logger name="com.mycompany.myapp.mapper" level="DEBUG"/>
如果问题仍然存在,请试一试。祝你好运!
答案 2 :(得分:2)
另一个快捷方式是在application.properties文件中将mybatis映射器的调试级别设置为true:
logging.level.<packageName>.mapper=DEBUG
在控制台或您的日志文件中打印的示例日志:
2020-03-03 09:41:27.057 DEBUG 10495 --- [io-50006-exec-1] c.f.t.d.m.M.countByExample : ==> Preparing: SELECT count(*) FROM MessageRecivers WHERE ((ReciverId = ? and ReadStats = ? and ReciverMessageFolder <> ?))
2020-03-03 09:41:27.066 DEBUG 10495 --- [io-50006-exec-1] c.f.t.d.m.M.countByExample : ==> Parameters: 58(Long), 0(Short), 1(Short)
2020-03-03 09:41:27.473 DEBUG 10495 --- [io-50006-exec-1] c.f.t.d.m.M.countByExample : <== Total: 1
答案 3 :(得分:1)
使用最简单的配置方式进行测试,并在日志中查看。然后自定义输出(例如文件,级别)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN"
"log4j.dtd" >
<log4j:configuration>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p (%c.java:%L).%M - %m%n"/>
</layout>
</appender>
<root>
<priority value="TRACE" />
<appender-ref ref="STDOUT"/>
</root>
</log4j:configuration>
答案 4 :(得分:1)
尝试在配置中添加所有必要的行。
以下是应该有效的示例:
#configure root logger
log4j.rootLogger=ERROR, file, stdout
#configure all mybatis mappers logging
log4j.logger.com.myco.dao=ERROR
#configure your mapper logging
log4j.logger.com.myco.dao.XYZMapper=DEBUG
#configure appender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n