mybatis的学习和使用--日志配置(3)

关于 mybatis的日志配置,在官网上已经有详细的配置说明,http://www.mybatis.org/mybatis-3/zh/logging.html   在调试mybatis的代码有着很大的用处。

我的样例代码路径是: https://github.com/wangjiuong/MybatisDemo/tree/master/ExampleMyBatisLogConfig

 

运行com.wang.MyBatis.app的main函数,

1     public static void main(String[] args) {
2         insertUser();
3         // deleteUser();
4         selectUserById();
5 
6         selectUserById();
7         // selectAllUser();
8     }
 1     /**
 2      * 新增用户
 3      */
 4     private static void insertUser() {
 5         SqlSession session = DBTools.getSession();
 6         UserMapper mapper = session.getMapper(UserMapper.class);
 7         UserBean user = new UserBean("懿", "1314520", 7000.0);
 8         try {
 9             mapper.insertUser(user);
10             System.out.println(user.toString());
11             session.commit();
12         } catch (Exception e) {
13             e.printStackTrace();
14             session.rollback();
15         }
16     }

 

selectUserById的函数如下:
 1     /**
 2      * 根据id查询用户
 3      */
 4     private static void selectUserById() {
 5         SqlSession session = DBTools.getSession();
 6         UserMapper mapper = session.getMapper(UserMapper.class);
 7         try {
 8             UserBean user = mapper.selectUserById(12);
 9             mapper.selectUserById(12);
10             mapper.selectUserById(12);
11             if (null != user) {
12                 System.out.println(user.toString());
13             }
14             session.commit();
15         } catch (Exception e) {
16             e.printStackTrace();
17             session.rollback();
18         }
19     }

 

 

日志输出如下:

 1 2017-04-04 23:08:21,496 DEBUG [com.wang.MyBatis.model.UserMapper.insertUser] -==>  Preparing: insert into t_user (username,password,account) values (?,?,?) 
 2   2017-04-04 23:08:21,558 DEBUG [com.wang.MyBatis.model.UserMapper.insertUser] -==> Parameters: 懿(String), 1314520(String), 7000.0(Double)
 3   2017-04-04 23:08:21,568 DEBUG [com.wang.MyBatis.model.UserMapper.insertUser] -<==    Updates: 1
 4   UserBean [id=9196, username=懿, password=1314520, account=7000.0]
 5 2017-04-04 23:08:21,585 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -==>  Preparing: select * from t_user where id=? 
 6   org.apache.ibatis.logging.jdbc.PreparedStatementLogger@543788f3
 7 2017-04-04 23:08:21,586 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -==> Parameters: 12(Integer)
 8   2017-04-04 23:08:21,612 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -<==      Total: 0
 9   2017-04-04 23:08:21,622 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -==>  Preparing: select * from t_user where id=? 
10   org.apache.ibatis.logging.jdbc.PreparedStatementLogger@15b3e5b
11 2017-04-04 23:08:21,622 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -==> Parameters: 12(Integer)
12   2017-04-04 23:08:21,626 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -<==      Total: 0

 

从日志输出可以看出,示例代码中没有开启二级缓存,mybatis的二级缓存的配置涉及到两项配置,1个是mapper.xml 配置,一个是setting中的配置,我们修改配置开启二级缓存配置:

UserMapper.xml配置修改如下:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 <mapper namespace="com.wang.MyBatis.model.UserMapper">
4     <cache/>
5     ***************************

 

mybatis.cfg.xml中cacheEnabled修改为true,

1         <setting name="cacheEnabled" value="true" />

在运行测试代码,日志显示如下:

 1 2017-04-04 23:35:10,221 DEBUG [com.wang.MyBatis.model.UserMapper.insertUser] -==>  Preparing: insert into t_user (username,password,account) values (?,?,?) 
 2   2017-04-04 23:35:10,283 DEBUG [com.wang.MyBatis.model.UserMapper.insertUser] -==> Parameters: 懿(String), 1314520(String), 7000.0(Double)
 3   2017-04-04 23:35:10,283 DEBUG [com.wang.MyBatis.model.UserMapper.insertUser] -<==    Updates: 1
 4   UserBean [id=9204, username=懿, password=1314520, account=7000.0]
 5 2017-04-04 23:35:10,299 DEBUG [com.wang.MyBatis.model.UserMapper] -Cache Hit Ratio [com.wang.MyBatis.model.UserMapper]: 0.0
 6   2017-04-04 23:35:10,314 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -==>  Preparing: select * from t_user where id=? 
 7   org.apache.ibatis.logging.jdbc.PreparedStatementLogger@6d3af739
 8 2017-04-04 23:35:10,314 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -==> Parameters: 12(Integer)
 9   2017-04-04 23:35:10,345 DEBUG [com.wang.MyBatis.model.UserMapper.selectUserById] -<==      Total: 0
10   2017-04-04 23:35:10,345 DEBUG [com.wang.MyBatis.model.UserMapper] -Cache Hit Ratio [com.wang.MyBatis.model.UserMapper]: 0.0
11   2017-04-04 23:35:10,345 DEBUG [com.wang.MyBatis.model.UserMapper] -Cache Hit Ratio [com.wang.MyBatis.model.UserMapper]: 0.0
12   2017-04-04 23:35:10,361 DEBUG [com.wang.MyBatis.model.UserMapper] -Cache Hit Ratio [com.wang.MyBatis.model.UserMapper]: 0.25
13   2017-04-04 23:35:10,361 DEBUG [com.wang.MyBatis.model.UserMapper] -Cache Hit Ratio [com.wang.MyBatis.model.UserMapper]: 0.4
14   2017-04-04 23:35:10,361 DEBUG [com.wang.MyBatis.model.UserMapper] -Cache Hit Ratio [com.wang.MyBatis.model.UserMapper]: 0.5
15   

从日志看出,二级缓存生效,在同一个mapper.xml的不同session之间,缓存生效。

 

posted @ 2017-04-04 23:37  王久勇  阅读(1274)  评论(0)    收藏  举报