zoukankan      html  css  js  c++  java
  • mybatis下使用log4j打印sql语句和执行结果

    本来以为很简单的问题, 结果自己搞了半天还是不行; 然后google, baidu, 搜出来各种方法, 有加slf4j*.jar的,有说去掉slf4j*.jar,还有说要配置mybatis.cfg.xml的, 有的甚至一眼看上去就是不可能成功的. 试了这么多, 结果没有一个好用的. 可能是版本不一致的问题? 但是里面也注明是适用于什么版本的. 具体原因就不知道了.

    mybatis版本: 3.2.3

    log4j:1.2.17

    后来参考了官方文档, 才知道, 其实只要配置mapper接口类或者配置文件中mapper的路径为debug就可以了. 具体可参考这里. 里面还说明了, 如果要打印sql语句的执行结果, 需要设置为trace级别.

    附上可以正常打印sql及运行结果的配置:

    log4j.properties:

    log4j.rootLogger=info,stdout
     
    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  
     
     
    # 打印sql语句:debug; 执行结果:trace
    ## 指定mapper配置文件中的namespace
    log4j.logger.mapperNS =TRACE

    mapper的配置文件:

    <mapper namespace="mapperNS.user">
        <select id="selectUser" parameterType="int" resultType="User">  
            <![CDATA[  
                select * from user where id = #{id}  
            ]]>
        </select>
    </mapper>  

    打印结果:

    2013-12-27 13:16:56,335 DEBUG [mapperNS.user.selectUser] -ooo Using Connection [com.mysql.jdbc.JDBC4Connection@2d8eef25]
    2013-12-27 13:16:56,344 DEBUG [mapperNS.user.selectUser] -==>  Preparing: select * from user where id = ? 
    2013-12-27 13:16:56,408 DEBUG [mapperNS.user.selectUser] -==> Parameters: 1(String)
    2013-12-27 13:16:56,430 TRACE [mapperNS.user.selectUser] -<==    Columns: id, name, sex, degree, birthdaty
    2013-12-27 13:16:56,436 TRACE [mapperNS.user.selectUser] -<==        Row: 1, wang, 1, 1.00, 1983-08-01
    2013-12-27 13:16:56,437 DEBUG [mapperNS.user.selectUser] -<==      Total: 1
    2013-12-27 13:16:56,439 INFO [action.UserAction] -User [id=1, name=wang, sex=1, birthday=null]

    其间还有个小问题, 也记录一下:

    提示:

    log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

    这种情况下没有打印出日志, 说明应用并没有对log4j进行初始化. 解决方法是要在应用启动时就进行

    // 这里的路径根目录是指应用的根目录,而不是classes目录
    PropertyConfigurator.configure("bin/conf/log4j.properties");
  • 相关阅读:
    CefSharp-基于C#的客户端开发框架技术栈开发全记录
    C#中HttpWebRequest、WebClient、HttpClient的使用详解
    蜘蛛侠网站-关注C#爬虫技术
    网络剪刀-NetCut
    JSON.stringify 格式化输出字符串
    Vue 3.0 provide 传值到子组件
    全局添加可执行的node脚本
    npm link
    低代码平台思路
    java jwt使用,springboot 整合java-jwt,java jwt工具类
  • 原文地址:https://www.cnblogs.com/jeevan/p/3493972.html
Copyright © 2011-2022 走看看