当前位置:Gxlcms > 数据库问题 > spring+mybatis中两次相同条件查询时 session一级缓存与数据库隔离级别需要注意的点

spring+mybatis中两次相同条件查询时 session一级缓存与数据库隔离级别需要注意的点

时间:2021-07-01 10:21:17 帮助过:2人阅读

@Override
@Transactional(propagation = Propagation.REQUIRED,isolation= Isolation.REPEATABLE_READ)
public User1 hsq_test_read(Integer id) {
User1 user1 = user1Mapper.selectByPrimaryKey(id);

User1 update =new User1();
update.setId(id);
update.setName("uuuuuuu");
int k=9;
//两次查询是否有更新
user1Mapper.updateByPrimaryKey(update);
//update ing debug
int i=9;

User1 user2 = user1Mapper.selectByPrimaryKey(id);
return user2;

//spring + mybatis 中
// 不开启flushCache="true"时, 第二次查询 直接用第一次查的缓存,mybatis session会话 (两次之间没更新操作) isolation= Isolation.READ_COMMITTED,isolation= Isolation.REPEATABLE_READ 一样
// 特别注意 https://blog.csdn.net/oqq0147/article/details/83149117
// 不开启flushCache="true"时, 当2次查询中间有更新操作时,查询的结果是更新后的结果 isolation= Isolation.READ_COMMITTED,isolation= Isolation.REPEATABLE_READ 一样


// 开启 flushCache="true"时, 第二次查询与第一次查询(两次之间没更新操作) isolation= Isolation.REPEATABLE_READ 读取的内容一样因为可重读,
// isolation= Isolation.READ_COMMITTED 读取的内容不一样,读已提交
// 开启 flushCache="true"时, 当2次查询中间有更新操作时,查询的结果是更新后的结果
// isolation= Isolation.READ_COMMITTED,isolation= Isolation.REPEATABLE_READ 一样
// isolation= Isolation.REPEATABLE_READ 读取的是更新后的结果 事务1 read-》update ing-->read 这时候事务2
                                                                                                                                            更新同一条sql是不能更新的 是阻塞的 
}

 

spring+mybatis中两次相同条件查询时 session一级缓存与数据库隔离级别需要注意的点

标签:comm   nsa   app   commit   cache   use   sdn   table   注意   

人气教程排行