1:下载jar
我使用的mybatis版本是3.4.4 ,log4j是1.2.17
log4j版本不能太高,高版本jar包有api和core两个jar包,这个版只有一个整合的包,
一开始我的版本是2.11,但在设置完后是一直报错java.lang.NoClassDefFoundError: org/apache/log4j/Priority
可能是mybatis的版本和log4j的高版本不兼容,于是下了版本log4j 1.2.17替换了2.4的两个包,然后就使用正常了。
2:配置文件
1)log4j.properties
建立于src根目录下
具体内容设置有很多详细教程,我的简单设置如下:
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
log4j.logger.mapper =DEBUG <!-- 我在这里设置路径mapper就是mybatis的mapper的路径,或者有其他设置看其他文章解释-->
2)mybatis-config.xml
只是在标签<settings>里加入了
<setting name="logImpl" value="LOG4J" /> 这一句必须有,是在mybatis里注册使用log4j
然后
因为我的设置里有log4j.logger.mapper =DEBUG,在mybatis使用了mapper时就会出现了日志
我的测试代码如下:里面的内容与log4j无关,只是简单的使用mybatis进行查询
SqlSessionFactory sqlfactory=null;
String resource="mybatis-config.xml";
InputStream input;
SqlSession session=null;
try{
input=Resources.getResourceAsStream(resource);
sqlfactory=new SqlSessionFactoryBuilder().build(input);
session=sqlfactory.openSession();
QQuser user=(QQuser)session.selectOne("getQQuser","1");
System.err.println(user.getName());
}catch(IOException e){
e.printStackTrace();
}finally{
if(session!=null){
session.close();
}
}
最后就有结果:
2018-10-10 23:18:08,695 DEBUG [mapper.QQuserMapper.getQQuser] -==> Preparing: select id,name,note from QQuser where id=1
2018-10-10 23:18:08,772 DEBUG [mapper.QQuserMapper.getQQuser] -==> Parameters:
2018-10-10 23:18:08,828 DEBUG [mapper.QQuserMapper.getQQuser] -<== Total: 1