已采纳回答 / 慕粉1852402560
MySQL的innodb存储引擎支持行级锁,innodb的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,innodb才使用行锁,否则使用表锁。根据当前的数据更新语句(UPDATE user set name=‘11111’ where account=‘1’),该条件字段account并没有添加索引,所以导致数据表被锁。
2018-05-11
最赞回答 / AlanLiu0328
insert只会锁当前行,别人insert和你insert不冲突。 而update就不一样了。 比如大家都要更新1000元抢Iphone6更新,那么就会抢同一行的锁
2018-04-10
最新回答 / 慕盖茨030889
没有库存的情况下会insert,但是update执行时更新条数小于0,就会抛出异常、事务回滚。好处就是: 用户第一次执行秒杀 insert -> update(持锁) ->commit(释放锁) 用户第二次执行秒杀 insert -> result减少了事务行级锁的时间。
2018-03-26
最赞回答 / 慕粉4220851
最直接一点也就是老师说的可以给他赋默认值为-2,因为我们在上面往map中存入该字段的时候他的值是null,而null赋值给int型的result会报错,可能是为了避免这种错误吧。
2018-03-23
最赞回答 / 慕移动5286350
Mybatis一级缓存作用域是session,session commit之后缓存就失效了Mybatis二级缓存作用域是sessionfactory,该缓存是以namespace为单位的(也就是一个Mapper.xml文件),不同namespace下的操作互不影响。所有对数据表的改变操作都会刷新缓存。但是一般不要用二级缓存,例如在UserMapper.xml中有大多数针对user表的操作。但是在另一个XXXMapper.xml中,还有针对user单表的操作。这会导致user在两个命名空间下的数据不一致。如...
2018-01-23
最新回答 / wxisme
用js获取的时间不是服务器时间,需要获取代码运行代码所在服务器时间,获取时间的接口每次返回的系统时间应该是某一台服务器的时间,保持一致性,准确性。如果数据库存储的时间和另一台的服务器的当前时间时钟不一致就容易出现问题。
2018-01-14