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以及输出结果