iBatis,spring,如何记录执行的sql?

我正在使用带弹簧框架的iBatis。 我想记录iBatis在我说的时候执行的sql

Employee e = (Employee) getSqlMapClientTemplate().queryForObject("emp_sql", emp); 

上面的代码行将在我拥有的ibatis sql文件中查找“emp_sql”id。 然后运行与“emp_sql”对应的查询。 我想记录这个查询。

我有以下log4j xml属性文件。

                       

我仍然无法获得ibatis执行的sql。 配置有问题吗? 我应该说

               

我是否必须使用p6spy或其他东西? 或者我可以在log4j配置中做些什么来获取iBatis sql日志?

将以下内容添加到log4j配置中(取消注释要查看的内容)。

 #SqlMap日志记录配置。
 #log4j.logger.com.ibatis = DEBUG
 #log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
 #log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
 #log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
 #log4j.logger.java.sql = DEBUG
 #log4j.logger.java.sql.Connection = DEBUG
 #log4j.logger.java.sql.Statement = DEBUG
 #log4j.logger.java.sql.PreparedStatement = DEBUG
 #log4j.logger.java.sql.ResultSet = DEBUG

在log4j.xml中添加它

     

如果您使用Log4j作为日志记录框架,则需要设置mybatis以使用log4j作为其默认日志记录工具。 您可以通过在mybatis-config.xml中设置它来完成此操作,

  

或者,如果您没有使用mybatis-config.xml和注释,那么您想要使用

 org.apache.ibatis.logging.LogFactory.useLog4JLogging(); 

在调用任何其他mybatis方法来设置默认日志记录实现之前。 阅读更多…

log4j.properties中使用此配置,

 # Global logging configuration log4j.rootLogger=INFO, stdout # MyBatis mapper interfaces logging configuration... log4j.logger.com.sample.mappers=DEBUG # SqlMap logging configuration. log4j.logger.org.mybatis.spring=DEBUG log4j.logger.org.apache.ibatis=DEBUG # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%p] %c - %m%n 

如果您使用的是log4j.xml配置,请尝试以上等效方法,

                       

使用属性文件或xml文件如上所述配置log4j并将其放在类路径中以使其正常工作。

在log4j中添加它

     

这将打印出sql以及输出结果