1、log4j1配置

目录结构:

conf.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <settings>
<!-- 配置用于控制台输出sql日志。低版本的mybatis不支持logImpl -->
<setting name="logImpl" value="LOG4J"/>
</settings> <environments default="oracle">
<environment id="oracle">
<!-- 指定事务管理类型,type="JDBC"指直接使用JDBC的提交与回滚 -->
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="12345" />
</dataSource>
</environment>
<environment id="mysql">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/world" />
<property name="username" value="root" />
<property name="password" value="12345" />
</dataSource>
</environment>
</environments> <mappers>
<!-- 注册empMapper.xml文件-->
<mapper resource="com/lfy/mapping/empMapper.xml"/>
</mappers> </configuration>

log4j.properties

#log4j-1
#全局日志配置
log4j.rootLogger=ERROR,stdout
#MyBatis日志配置
log4j.logger.com.lfy.mapping.empMapper=DEBUG
#控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p[%c] - %m%n

empMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 为这个mapper指定一个唯一的namespace-->
<mapper namespace="com.lfy.mapping.empMapper">
<select id="getEmp" parameterType="int" resultType="com.lfy.bean.Emp">
select * from emp where empno=#{empno}
</select>
</mapper>

Emp.java

package com.lfy.bean;

import java.util.Date;

public class Emp {

    private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hireDate;
private Integer sal;
private Integer comm;
private Integer deptno; public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hireDate;
}
public void setHiredate(Date hiredate) {
hireDate = hiredate;
}
public Integer getSal() {
return sal;
}
public void setSal(Integer sal) {
this.sal = sal;
}
public Integer getComm() {
return comm;
}
public void setComm(Integer comm) {
this.comm = comm;
}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
} @Override
public String toString() { return "User=[empno="+empno+
",ename="+ename+
",job="+job+
",mgr="+mgr+
",hiredate="+hireDate+
",sal="+sal+
",comm="+comm+
",deptno="+deptno+"]";
}
}

MybatisTest.java

package com.lfy.main;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.lfy.bean.Emp; /**
* 使用log4j-1配置日志
* @author lfy
*
*/
public class MybatisTest { public static void main(String[] args) { //mybatis的配置文件
String resource = "conf.xml";
//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
InputStream is = MybatisTest.class.getClassLoader().getResourceAsStream(resource);
//构建sqlSession的工厂
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
//使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
//Reader reader = Resources.getResourceAsReader(resource);
//构建sqlSession的工厂
//SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建能执行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的标识字符串,
* com.lfy.mapping.empMapper是empMapper.xml文件中mapper标签的namespace属性的值,
* getEmp是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
*/
String statement = "com.lfy.mapping.empMapper.getEmp";//映射sql的标识字符串
//执行查询返回一个唯一user对象的sql
Emp emp = session.selectOne(statement, 7839);
System.out.println(emp);
} }

运行结果:

2、log4j2配置

目录结构:

conf.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <settings>
<!-- 配置用于控制台输出sql日志。低版本的mybatis不支持logImpl -->
<setting name="logImpl" value="LOG4J2"/>
</settings> <environments default="oracle">
<environment id="oracle">
<!-- 指定事务管理类型,type="JDBC"指直接使用JDBC的提交与回滚 -->
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="12345" />
</dataSource>
</environment>
<environment id="mysql">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/world" />
<property name="username" value="root" />
<property name="password" value="12345" />
</dataSource>
</environment>
</environments> <mappers>
<!-- 注册empMapper.xml文件-->
<mapper resource="com/lfy/mapping/empMapper.xml"/>
</mappers> </configuration>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!-- <File name="File" fileName="../logs/test.log" append="true">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File> -->
</appenders> <loggers>
<logger name="com.lfy.mapping" level="debug" additivity="false">
<appender-ref ref="Console"/>
</logger>
<!-- <logger name="log4j.logger.java.sql.Statement" level="info" additivity="false">
<appender-ref ref="File"/>
</logger>
<Logger name="com.lfy.mapping" level="debug" additivity="false">
<AppenderRef ref="File"/>
</Logger> --> <root level="info">
<appender-ref ref="Console"/>
<!-- <appender-ref ref="File"/> -->
</root>
</loggers>
</configuration>

运行结果:

总结:

    使用log4j1时,需要引入log4j1的包、在conf.xml中添加<setting name="logImpl" value="LOG4J"/>、编写log4j.properties;

    使用log4j2时,需要引入log4j2的包、在conf.xml中添加<setting name="logImpl" value="LOG4J2"/>、编写log4j2.xml。

Mybatis-第N篇配置log4j1、log4j2打印执行的sql语句的更多相关文章

  1. Mybatis中在log日志或控制台打印执行的sql

    最近在调试代码时,需要查看当前操作执行的sql,在日志里没查到,经过修改logback配置后成功,现记录如下:一.Mybatis版本是3.0.6(我正在用的版本)该版本只需要修改logback.xml ...

  2. mybatis 控制台打印执行的SQL语句

    1. Spring boot 集成 mybatis [转载]SpringBoot中Mybatis打印sql 1.1 如果使用的是application.properties文件,加入如下配置: log ...

  3. 【转】 mybatis如何在控制台打印执行的sql语句

    <strong>######################################################################### #Root Logger ...

  4. mybatis如何在控制台打印执行的sql语句

    log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log ...

  5. mybatis控制台打印执行的sql语句

  6. Spring Boot 整合MaBatis如何在控制台打印执行的SQL语句

    yml文件:logging: level: com.XXX.Mapper: debug (红色部分为Dao层的包名,注意不是XML文件的包名) properties文件: logging.level. ...

  7. MyBatis7:MyBatis插件及示例----打印每条SQL语句及其执行时间

    Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update.q ...

  8. MyBatis插件及示例----打印每条SQL语句及其执行时间

    Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update.q ...

  9. log4j2打印jdbcTemplate的sql以及参数

    log4j2打印jdbcTemplate的sql以及参数 ——IT唐伯虎 摘要: log4j2打印jdbcTemplate的sql以及参数. 在log4j2.xml加上这两个logger即可: < ...

随机推荐

  1. xtrabackup备份mysql以及创建自动定时任务

    xtrabackup的安装 安装依赖关系 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo y ...

  2. bzoj5017 [Snoi2017]炸弹 (线段树优化建图+)tarjan 缩点+拓扑排序

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5017 题解 这个题目方法挺多的. 线段树优化建图 线段树优化建图的做法应该挺显然的,一个炸弹能 ...

  3. 花式赋值、列表、字典、解压缩、input()、格式化学习笔记

    目录 花式赋值 列表(list) 字典(dict) 解压缩 input()与用户交互 格式化的三种方式 f_String格式化(important) %s.%d占位符 format 格式化(不常用) ...

  4. Mybatis foreach批量插入

    1.foreach的属性 item:集合中元素迭代时的别名,必填 index:在list和array中,index是元素的序号:在map中,index是元素的key,可选 open:foreach代码 ...

  5. 微信小程序自定义底部导航栏组件+跳转

    微信小程序本来封装有底部导航栏,但对于想自定义样式和方法的开发者来说,这并不是很好. 参考链接:https://github.com/ljybill/miniprogram-utils/tree/ma ...

  6. [CF1054C]Candies Distribution

    题目:Candies Distribution 传送门:http://codeforces.com/problemset/problem/1054/C 分析: 方法一: 1)类似拓扑排序的做法. 2) ...

  7. python3下multiprocessing、threading和gevent性能对比----暨进程池、线程池和协程池性能对比

    python3下multiprocessing.threading和gevent性能对比----暨进程池.线程池和协程池性能对比   标签: python3 / 线程池 / multiprocessi ...

  8. Tomcat 的work 目录

    1    用tomcat作web服务器的时候,部署的程序在webApps下,这些程序都是编译后的程序(发布到tomcat的项目里含的类,会被编译成.class后才发布过来,源文件没有发布过来,但这里的 ...

  9. inode节点用尽处理

    linux inode已满解决方法 原文 今天login server的一个网站,发现login后没有生成session.根据以往经验,一般是空间已满导致session文件生成失败. df -h Fi ...

  10. C# 调Win32 API SendMessage简单用法及wMsg常量

    函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.该函数是应用程序和应用程序之间进行消息传递的主要手段之一.     函数原型:LRESU ...