标签:comm nsa app commit cache use sdn table 注意
@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 注意
原文地址:https://www.cnblogs.com/hsq666666/p/13095929.html