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. python笔记(2)--字符串

    一.创建字符串 使用 '' , "" , ''' 和 """ 来创建字符串 var1 = 'hello, world' var2 = "ja ...

  2. java Character类源码分析

    一.使用 构建Character对象: public class CharTest { public static void main(String[] args) { Character c1 = ...

  3. SpringBoot配置自定义美化Swagger2

    1.添加maven依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springf ...

  4. 锁,threading local,以及生产者和消费者模型

    1.锁:Lock(一次放行一个) 线程安全,多线程操作时,内部会让所有的线程排队处理. 线程不安全:+人=>排队处理 以后锁代码块 v=[] lock=threading.Lock()#声明锁 ...

  5. pyserial库-串口通讯模块

    pySerial 封装了串口通讯模块,支持Linux.Windows.BSD(可能支持所有支持POSIX的操作系统),支持Jython(Java)和IconPython(.NET and Mono). ...

  6. SpringCloud学习系列-Eureka自我保护模式(5)

    什么是自我保护模式? 默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒).但是当网络分区故障发生时,微服务与Eur ...

  7. LeetCode--152--乘积最大子序列(python)

    给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6.示例 2: 输 ...

  8. JDK1.8 LinkedList双向链表源码

    序言 LinkedList是一个双向链表 也就是说list中的每个元素,在存储自身值之外,还 额外存储了其前一个和后一个元素的地址,所以也就可以很方便地根据当前元素获取到其前后的元素 链表的尾部元素的 ...

  9. 特征点检测算法——FAST角点

    上面的算法如SIFT.SURF提取到的特征也是非常优秀(有较强的不变性),但是时间消耗依然很大,而在一个系统中,特征提取仅仅是一部分,还要进行诸如配准.提纯.融合等后续算法.这使得实时性不好,降系了统 ...

  10. #1123-JSP隐含对象

    JSP 隐含对象 JSP隐含对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐含对象也被称为预定义变量. JSP所支持的九大隐含对象: 对象,描述 reque ...