赞
踩
Mybatis 通过使用内置的日志工厂提供日志功能。内置日志工厂将会把日志工作委托给下面的实现之一:
- SLF4J
- Apache Commons Logging
- Log4j 2
- Log4j
- JDK logging
MyBatis 内置日志工厂会基于运行时检测信息选择日志委托实现。它会(按上面罗列的顺序)使用第一个查找到的实现。当没有找到这些实现时,将会禁用日志功能。
不少应用服务器(如 Tomcat 和 WebShpere)的类路径中已经包含 Commons Logging。注意,在这种配置环境下,MyBatis 会把 Commons Logging 作为日志工具。这就意味着在诸如 WebSphere 的环境中,由于提供了 Commons Logging 的私有实现,你的 Log4J 配置将被忽略。这个时候你就会感觉很郁闷:看起来 MyBatis 将你的 Log4J 配置忽略掉了(其实是因为在这种配置环境下,MyBatis 使用了 Commons Logging 作为日志实现)。如果你的应用部署在一个类路径已经包含 Commons Logging 的环境中,而你又想使用其它日志实现,你可以通过在 MyBatis 配置文件 mybatis-config.xml 里面添加一项 setting 来选择其它日志实现。
- <configuration>
- <settings>
- ...
- <setting name="logImpl" value="LOG4J"/>
- ...
- </settings>
- </configuration>
可选的值有:
- SLF4J、
- LOG4J、
- LOG4J2、
- JDK_LOGGING、
- COMMONS_LOGGING、
- STDOUT_LOGGING、
- NO_LOGGING,
或者是实现了 org.apache.ibatis.logging.Log
接口,且构造方法以字符串为参数的类完全限定名。
(1)在mybatis-config.xml文件中插入:
- <settings>
- <setting name="logImpl" value="STDOUT_LOGGING"/>
- </settings>
【注】:在<configuration>中,元素必须按照以下顺序出现在configuration中 (properties, settings, typeAliases, typeHandlers, objectFactory, objectWrapperFactory, reflectorFactory, plugins, environments, databaseIdProvider, mappers)。
(2)执行【Mybatis】动态SQL 实例中的getVisibleBlogListByLabelAndTitle():
- @Test
- public void getVisibleBlogListByLabelAndTitle(){
- SqlSession sqlSession = MybatisUtils.getSqlSession();
- BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
-
- Map<String, Object> map = new HashMap<String, Object>();
- map.put("label", "Spring");
- map.put("title", "%AOP%");
- List<Blog> blogs = mapper.getBlogListByLabelAndTitle(map);
- for (Blog blog : blogs) {
- System.out.println(blog);
- }
-
- sqlSession.close();
- }
输出结果为:
- Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
- PooledDataSource forcefully closed/removed all connections.
- PooledDataSource forcefully closed/removed all connections.
- PooledDataSource forcefully closed/removed all connections.
- PooledDataSource forcefully closed/removed all connections.
- Opening JDBC Connection
- Created connection 594651850.
- Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2371aaca]
- ==> Preparing: select * from blog where label = ? AND title like ?
- ==> Parameters: Spring(String), %AOP%(String)
- <== Columns: id, title, author, _time, read_count, label, _like, visible
- <== Row: 117374430, 【Spring】AOP(一)使用Spring的API接口, 牧心., 2021-05-30 19:00:46, 228, Spring, 1, 1
- <== Row: 118054659, 【Spring】AOP(二)自定义来实现AOP, 牧心., 2021-06-19 15:50:23, 192, Spring, 1, 1
- <== Row: 118058442, 【Spring】AOP(三)注解实现AOP, 牧心., 2021-06-19 20:06:54, 203, Spring, 1, 1
- <== Total: 3
- Blog{id=117374430, title='【Spring】AOP(一)使用Spring的API接口', author='牧心.', time='null', read_count=228, label='Spring', like=0, visible=1}
- Blog{id=118054659, title='【Spring】AOP(二)自定义来实现AOP', author='牧心.', time='null', read_count=192, label='Spring', like=0, visible=1}
- Blog{id=118058442, title='【Spring】AOP(三)注解实现AOP', author='牧心.', time='null', read_count=203, label='Spring', like=0, visible=1}
- Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2371aaca]
- Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2371aaca]
- Returned connection 594651850 to pool.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。