记录两个数据库相关的问题

1. 某业务方法上存在spring事务注解@Transactional,在该方法中有两条dao调用,即两条sql语句,操作的是同一张表,如果先执行insert语句,再执行select语句,会出现这样的问题:即我们原本认为数据库本身是空值的,但是select语句查询出来的是有值的,然而当我们实际去使用日志打印的sql去查询数据库时,其实是没有值的,这个是因为事务控制+mybatis session导致的原因,其实还没有真实插入一条数据到数据库中时,已经存在一条记录保存在mybatis的session中,下次执行select语句会带出session中的记录

 

2. 在for循环中执行select语句,如果两次执行语句一样,且启动了mybatis二级缓存,那么如果你对之前第一条执行的语句返回的对象进行操作(如重新为某个属性赋值)的话,会导致第二条语句返回的对象不正确,实际上第二条数据库查询语句没有真正执行,而是从缓存中读取第一条执行后返回的对象,因为第一条语句返回的对象被手动修改,所以导致第二次的返回对象有问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值