mybatis 二级缓存失效_Mybatis 缓存失效的几种情况

1 不在同一个sqlSession对象中下面比较下载同一个sqlSession和不在同一sqlSession下面的两种情况:同一sqlSession:@Testpublic final voidtestQueryClazzById() {SqlSession session=sqlSessionFactory.openSession();try{ClazzMapper clazzMapper= s...
摘要由CSDN通过智能技术生成

1 不在同一个sqlSession对象中

下面比较下载同一个sqlSession和不在同一sqlSession下面的两种情况:

同一sqlSession:

@Testpublic final voidtestQueryClazzById() {

SqlSession session=sqlSessionFactory.openSession();try{

ClazzMapper clazzMapper= session.getMapper(ClazzMapper.class);

Clazz clazz1= clazzMapper.queryClazzById(1);

System.out.println("clazz1 = "+clazz1);

Clazz clazz2= clazzMapper.queryClazzById(1);

System.out.println("clazz2 = "+clazz2);

}finally{

session.close();

}

如下sql执行了一次,第二次queryClazzById没有执行sql,直接从缓存里面获取。

DEBUG [main] - ==>  Preparing: select c.*,s.id stu_id,s.name stu_name from t_clazz c left join t_student s on c.id = s.clazz_id where c.id = ?

DEBUG [main] - ==> Parameters: 1(Integer)

DEBUG [main] - <==      Total: 3

clazz1 = Clazz [id=1, name=javaEE20170228, stus=[Student [id=1, name=stu0228_张三, clazz=null], Student [id=2, name=stu0228_李四, clazz=null], Student [id=3, name=stu0228_王五, clazz=null]]]

clazz2 = Clazz [id=1, name=javaEE20170228, stus=[Student [id=1, name=stu0228_张三, clazz=null], Student [id=2, name=stu0228_李四, clazz=null], Student [id=3, name=stu0228_王五, clazz=null]]]

不在同一sqlSession:

@Testpublic final voidtestQueryClazzById() {

SqlSession session=sqlSessionFactory.openSession();try{

ClazzMapper clazzMapper= session.getMapper(ClazzMapper.class);

Clazz clazz1= clazzMapper.queryClazzById(1);

System.out.println("clazz1 = "+clazz1);

}finally{

session.close();

}//緩存失效的四種情況//不在同一個對象中

SqlSession session2 =sqlSessionFactory.openSession();try{

ClazzMapper clazzMapper2= session2.getMapper(ClazzMapper.class);

Clazz clazz2= clazzMapper2.queryClazzById(1);

System.out.println("clazz2 = "+clazz2);

}finally{

session2.close();

}

}

看下结果:

DEBUG [main] - ==>  Preparing: select c.*,s.id stu_id,s.name stu_name from t_clazz c left join t_student s on c.id = s.clazz_id where c.id = ?

DEBUG [main] - ==> Parameters: 1(Integer)

DEBUG [main] - <==      Total: 3

clazz1 = Clazz [id=1, name=javaEE20170228, stus=[Student [id=1, name=stu0228_张三, clazz=null], Student [id=2, name=stu0228_李四, clazz=null], Student [id=3, name=stu0228_王五, clazz=null]]]

DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@6895a785]

DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@6895a785]

DEBUG [main] - Returned connection 1754638213 to pool.

DEBUG [main] - Opening JDBC Connection

DEBUG [main] - Checked out connection 1754638213 from pool.

DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@6895a785]

DEBUG [main] - ==>  Preparing: select c.*,s.id stu_id,s.name stu_name from t_clazz c left join t_student s on c.id = s.clazz_id where c.id = ?

DEBUG [main] - ==> Parameters: 1(Integer)

DEBUG [main] - <==      Total: 3

clazz2 = Clazz [id=1, name=javaEE20170228, stus=[Student [id=1, name=stu02

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值