使用log4j2打印mybatis的sql执行日志

【1】maven配置jar包依赖, 如下:

	<!-- 日志jar --><!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.11.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.11.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-web</artifactId><version>2.11.1</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.11.1</version></dependency></dependencies>

【2】配置log4j2.xml 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %l %msg%n"/></Console></Appenders><Loggers><Root level="error"><AppenderRef ref="Console"/></Root><Logger name="com.swjtu.crud.dao" level="DEBUG or TRACE" additivity="false"><AppenderRef ref="Console"/></Logger></Loggers>
</Configuration>

Logger 标签 配置了需要打印日志的mapper(Mapper类或mapper XML 文件所在包)

Logger标签中的 level属性取值为 DEBUG 或者 TRACE,(取其一)

【3】mybatis配置文件 mybatis-config.xml 中设置日志的工具类, 如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="dbconfig.properties"></properties><settings><!-- 驼峰命名规则 --><setting name="mapUnderscoreToCamelCase" value="true"/><!-- 配置日志工具 --><setting name="logImpl" value="LOG4J2" /></settings><typeAliases><package name="com.swjtu.crud.bean" /></typeAliases><plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin></plugins><environments default="development"><!-- 开发环境 --><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapper resource="com\swjtu\crud\dao\dept.mapper.xml"/></mappers></configuration>

【4】日志打印效果:

20:35:28.742 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) ==>  Preparing: SELECT dept_id AS DEPT_ID , dept_name AS DEPT_NAME FROM dept_tbl WHERE rcrd_id IN ( ? , ? , ? ) 
20:35:28.786 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) ==> Parameters: 1(String), 2(String), 3(String)
20:35:28.807 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) <==      Total: 3

打印sql为:

<!-- 查询部门列表 --> <select id="getDeptList" resultType="map"> SELECT dept_id AS DEPT_ID , dept_name AS DEPT_NAMEFROM dept_tbl WHERE rcrd_id IN (<foreach collection="LIST" item="item" separator=", ">#{item} </foreach> ) </select>

References are as follows.

http://www.mybatis.org/mybatis-3/zh/logging.html

https://blog.csdn.net/honghailiang888/article/details/52594014 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java多线程神器:join使用及原理

转载自 Java多线程神器&#xff1a;join使用及原理 join() join()是线程类 Thread的方法&#xff0c;官方的说明是&#xff1a; Waits for this thread to die. 等待这个线程结束&#xff0c;也就是说当前线程等待这个线程结束后再继续执行&#xff0c;下面来看这个示例就明白…

页面残留数据该如何处理

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.6.13关于页面数据残留的问题&#xff0c;我前几天就遇到了&#xff0c;刚开始的时候我写完那个页面是不知道它有毛病的&#xff0c;后来我才发现了它居然有一个小问题。 先来…

基于maven的SpringMVC+Spring+MyBatis+Log4j2的pom配置

【0】README&#xff1a;本文旨在给出可以正常跑 测试用例的项目依赖配置&#xff0c; 同时还会给出 maven 编译项目时的坑儿&#xff1b; 【1】 pom配置&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/20…

一张图弄懂java线程的状态和生命周期

转载自 一张图弄懂java线程的状态和生命周期 上图是一个线程的生命周期状态流转图&#xff0c;很清楚的描绘了一个线程从创建到终止的过程。 这些状态的枚举值都定义在java.lang.Thread.State下 NEW&#xff1a;毫无疑问表示的是刚创建的线程&#xff0c;还没有开始启动。 RUNN…

如何添加数据到session中

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.6.17我们都知道session相当于服务器的一次对话&#xff0c;服务器会为每个新的用户创建一个新的 Session&#xff0c;并在 session 到期时撤销掉这个 Session 对象。所以sess…

MySQL8.0: Serialized Dictionary Information(SDI) 浅析

转自&#xff1a; https://yq.aliyun.com/articles/600183 SDI是Serialized Dictionary Information的缩写&#xff0c;是MySQL8.0重新设计数据词典后引入的新产物。我们知道MySQL8.0开始已经统一使用InnoDB存储引擎来存储表的元数据信息&#xff0c;但对于非InnoDB引擎&#…

非常有用的并发控制-倒计时器CountDownLatc

转载自 非常有用的并发控制&#xff0d;倒计时器CountDownLatch CountDownLatch见名思义&#xff0c;即倒计时器&#xff0c;是多线程并发控制中非常有用的工具类&#xff0c;它可以控制线程等待&#xff0c;直到倒计时器归0再继续执行。 给你出个题&#xff0c;控制5个线程执…

移除指定的session

在上次我写的文章中&#xff0c;我描述了如何把数据添加到session里面&#xff0c;再让临时表格读取session的数据显示到页面。 我们都知道&#xff0c;有添加就有移除对吧&#xff0c;哪么我们又该如何把临时表格里面的数据移除呢&#xff1f;嘿嘿&#xff0c;这个其实也挺简…

javap命令参数

C:\Users\pacoson>javap -help 用法: javap <options> <classes> 其中, 可能的选项包括:-help --help -? 输出此用法消息-version 版本信息-v -verbose 输出附加信息-l 输出行号和本地变量表-pub…

非常有用的并发控制-循环栅栏CyclicBarrier

转载自 非常有用的并发控制&#xff0d;循环栅栏CyclicBarrier昨天我讲了倒计时器CountDownLatch的应用&#xff0c;它是阻塞线程直到计时器归0的一种等待方式。今天讲的这个循环栅栏CyclicBarrier与倒计时器非常类似&#xff0c;但它比倒时器更加强大且稍微复杂&#xff0c;它…

一个会定时执行的方法

开发工具与关键技术&#xff1a;Visual Studio、MVC作者&#xff1a;幻奏撰写时间&#xff1a;2019.6.27我们在做项目的时候不是有一些要我们定时完成的任务吗&#xff1f;很多人应该都会用定时器来完成这个任务。我今天要讲的就是如何使用定时器的插件来完成我们今天的任务。 …

VC6.0下载及安装

转自&#xff1a; https://blog.csdn.net/weixin_37536336/article/details/81187963 希望对下载&#xff0c;并学习C语言的朋友&#xff0c;有帮助。 1.绿色版&#xff1a; 网址&#xff1a;https://pan.baidu.com/s/1jN70y8x6-_1XGJHESlMspA 密码&#xff1a;sla5 2.企业…

如何实现下拉框的绑定

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.7.5下拉框你们都见过吧&#xff0c;下拉框的作用是方便用户更快的输入&#xff0c;同时也限制了用户&#xff0c;再也不怕用户乱写啦。 下拉框我们该如何绑定呢&#xff0c;这…

volatile关键字解析~高级java必问

转载自 volatile关键字解析~高级java必问昨天我介绍了原子性、可见性、有序性的概念&#xff0c;那么今天就来见识下这些概念的主角-volatile关键字。volatile基本介绍volatile可以看成是synchronized的一种轻量级的实现&#xff0c;但volatile并不能完全代替synchronized&…

B树、B+树、B*树谈到R 树

转自&#xff1a; https://blog.csdn.net/v_JULY_v/article/details/6530142 从B 树、B 树、B* 树谈到R 树 作者&#xff1a;July、weedge、Frankie。编程艺术室出品。 说明&#xff1a;本文从B树开始谈起&#xff0c;然后论述B树、B*树&#xff0c;最后谈到R 树。其中B树、B树…

一个会定时完成的任务(二)

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.7.5上次我大概说了一下定时任务是如何实现的&#xff0c;由于我只是大概的说了那个插件是如何使用的&#xff0c;它的其他方法我还没和你们细说&#xff0c;所以&#xff0c;…

String.format()方法的使用

转载自 java字符串格式化&#xff1a;String.format()方法的使用常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的读者应该记得C语言的sprintf()方法&#xff0c;两者有类似之处。format()方法有两种重载形式。 l form…

转-《高性能mysql》并不是一本好书——SQL笔记

转自&#xff1a; https://book.douban.com/review/8122660/ 版权归作者所有&#xff0c;任何形式转载请联系作者。 作者&#xff1a;姚泽源&#xff08;来自豆瓣&#xff09; 来源&#xff1a;https://book.douban.com/review/8122660/ 在知乎上发过一次&#xff0c;这里也发一…

实现模糊查询并忽略大小写

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.7.13我们在实现查询功能的时候&#xff0c;常常会用到模糊查询。这个呀&#xff0c;可是很重要的&#xff0c;当用户输入条件查询时&#xff0c;我们就要显示对应的数据&…

字符串拼接方式

转载自 java提高篇之字符串对于字符串而言我们经常是要对其进行拼装处理的&#xff0c;在java中提高了三种拼装的方法&#xff1a;、concat()以及append()方法。这三者之间存在什么区别呢&#xff1f;先看如下示例&#xff1a; public class StringTest {/*** desc 使用、conca…