MyBatis日志

MyBatis在使用过程中不开启日志,调试起来非常难受。总结一下MyBatis日志配置方法,文章参考MyBatis官方文档:http://www.mybatis.org/mybatis-3/zh/logging.html


一.MyBatis日志实现(摘自官网)

Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j
  • JDK logging

具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上面列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。


二.指定使用的日志

1.mybatis-config.xml

在MyBatis总配置文件中添加<setting name="logImpl" value="" />标签,指定使用的日志。可选值如注释中所示,下面以Log4j为例:

<settings>
	....
	<!-- 
		指定Mybatis所用日志的具体实现,value属性可选值:
		SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING 
	-->
	<setting name="logImpl" value="LOG4J"/>
	...
</settings>
2.Log4j日志配置

(1).引入jar包,maven依赖如下:

<dependency>
	 <groupId>log4j</groupId>
	 <artifactId>log4j</artifactId>
	  <version>1.2.17</version>
</dependency>
(2).log4j.properties配置

例如需要记录com.my.mybatis.mapper包下所有XXXMapper接口或者XXXMpper.xml配置文件的日志信息,设置log4j.logger.com.my.mybatis.mapper=DEBUG,日志级别为DEBUG,其他可选值如INFO、ERROR等;该配置文件需要放在根目录下,简单配置如下:

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.my.mybatis.mapper=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n
添加好以上配置以后,Log4J就会把com.my.mybatis.mapper包下的所有XXXMapper接口中方法的执行日志记录下来,设置为DEBUG级别后只会记录SQL


三.测试

1.com.my.mybatis.mapper.UserMapper

UserMapper接口类

public interface UserMapper {
	public User findById(Long id); 
}
2.com.my.mybatis.mapper.UesrMapper.xml

UserMapper配置文件,namespace属性建议配置成对应接口类完整名称

...
<mapper namespace="com.my.mybatis.mapper.UserMapper">	
	
	<resultMap type="com.my.mybatis.pojo.User" id="userMap">
		<id property="id" column="user_id"/>
		<result property="user_name" column="user_name"/>
		<result property="user_age" column="user_age"/>
	</resultMap>
	<select id="findById" parameterType="long" resultMap="userMap">
		select t.id user_id, t.*
		from t_user t
		where t.id = #{id}
	</select>
</mapper>
3.测试

public void testLog() throws Exception {
	InputStream inputStream = org.apache.ibatis.io.Resources.getResourceAsStream("mybatis-config.xml");
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	SqlSession session = sqlSessionFactory.openSession();
		
	UserMapper userMapper = session.getMapper(UserMapper.class);
	User user = userMapper.findById(1L);
	System.out.println(user.getUser_name());
		
	session.commit();
	session.close();
}

日志信息:

2017-11-14 19:45:47 JakartaCommonsLoggingImpl.java DEBUG ==>  Preparing: select t.id user_id, t.* from t_user t where t.id = ? 
2017-11-14 19:45:48 JakartaCommonsLoggingImpl.java DEBUG ==> Parameters: 1(Long)
2017-11-14 19:45:48 JakartaCommonsLoggingImpl.java DEBUG <==      Total: 1
小明


四.其他日志

以SLF4J为例,具体就不再说明:
1.mybatis-config.xml
在MyBatis总配置文件中添加<setting name="logImpl" value="SLF4J" />标签
<settings>
	...
	<setting name="logImpl" value="SLF4J"/>
	...
</settings>
2.引入jar包

需要3个jar包,slf4j-api-xxx.jar、slf4j-log4j12-xxx.jar、log4j-xxx.jar;直接引入slf4j-log4j12-xxx.jar即可,会自动引入依赖的另外2个jar包

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-log4j12</artifactId>
	<version>1.6.4</version>
</dependency>

3.配置log4j.properties
配置同上,测试同上



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值