首页 > 数据库技术 > 详细

iBatis配置log4j输出SQL详解

时间:2014-02-23 02:50:23      阅读:522      评论:0      收藏:0      [点我收藏+]

在log4j.properties文件配置如下内容即可输入SQL语句了

  1. # Preparing Statement: SQL
  2. log4j.logger.java.sql.Connection = DEBUG  
  3. # Executing Statement: SQL / Parameters / Types
  4. log4j.logger.java.sql.Statement = DEBUG  
  5. log4j.logger.java.sql.PreparedStatement = DEBUG  
  6. # ResultSet: Header / Result
  7. #log4j.logger.java.sql.ResultSet = DEBUG  

下面是配置详解,够详细吧!

配置这一句就会输出SQL
log4j.logger.java.sql.Connection = DEBUG
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {conn-100006} Connection
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {conn-100006} Preparing Statement: SELECT id, name FROM t_sys_role WHERE role_id = ?
配置这两句就会输出调用SQL的参数值和类型
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {pstm-100007} Executing Statement: SELECT id, name FROM t_sys_role WHERE role_id = ?
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {pstm-100007} Parameters: [500002]
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {pstm-100007} Types: [java.lang.Integer]
配置这一句就会输出调用SQL的执行结果
log4j.logger.java.sql.ResultSet = DEBUG
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {rset-100008} ResultSet
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {rset-100008} Header: [id, name]
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {rset-100008} Result: [810001, 首页]
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {rset-100008} Result: [810002, 注册]
    [DEBUG] com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl
    {rset-100008} Result: [810003, 下载]

执行结果一般数据比较多,最好不要输出,所以配这三条就好了
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG

曾经有一个项目,希望将SQL输出到日志中,特意写了一个方法,每次执行前调用一次,那叫一个复杂啊!

public String getSqlString(String sqlId, Object params) {
    SqlMapClientImpl sqlmap = (SqlMapClientImpl) getSqlMapClient();
    SqlMapSession session = sqlmap.openSession();
    
    SessionScope sessionScope = new SessionScope();
    sessionScope.setSqlMapClient(sqlmap);
    sessionScope.setSqlMapExecutor(sqlmap);
    sessionScope.setSqlMapTxMgr(session);
    
    StatementScope statementScope = new StatementScope(sessionScope);
    sessionScope.incrementRequestStackDepth();
    SqlMapExecutorDelegate delegate = sqlmap.getDelegate();
    MappedStatement ms = delegate.getMappedStatement(sqlId);
    ms.initRequest(statementScope);

    MappedStatement stmt = sqlmap.getMappedStatement(sqlId);
    Sql sql = stmt.getSql();
    String string = sql.getSql(statementScope, params);
    session.close();
    return string;
}

iBatis配置log4j输出SQL详解

原文:http://blog.csdn.net/zhaohuihua/article/details/19618009

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!