一、前言
1)结论1 - 在同一个事务中,对同一条数据进行先插入,后查询,再更新,再查询,都是可行的。
2)结论2 - 事务隔离级别是限制不同事务,对于同一个事务没有意义。
3)结论3)spring的事务的隔离级别是建立在数据库的事务支持基础上(如选择数据库引擎不支持事务,配置不生效) - MySQL,MariaDB,PostgreSQL都支持四种隔离级别,Oracle的事务隔离级别就只有三种:读已提交、串行化、只读(Read-Only),增加了只读级别,去掉了读未提交和可重复读两个级别。
二、结论示例验证
如需运行调试该示例请下载相关demo完整项目,下面
1)先插入再查询,保证同步查询结果
@Override@b@@Transactional(rollbackFor = Exception.class)@b@public String insertAfterSelect(DemoFirst demoFirst){@b@ //1.先插入@b@ demoFirstMapper.insert(demoFirst);@b@ //2.查询结果@b@ DemoFirst selectResult=demoFirstMapper.selectOne(Wrappers.<DemoFirst>query().lambda()@b@ .eq(DemoFirst::getCode, demoFirst.getCode())@b@ .eq(DemoFirst::getName, demoFirst.getName()));@b@@b@ System.out.println("selectResult="+ JSON.toJSONString(selectResult));@b@@b@ return JSON.toJSONString(selectResult);@b@}
2)接口调用配置
@GetMapping("/insertAfterSelect")@b@public String insertAfterSelect() {@b@ //@b@ DemoFirst demoFirst = new DemoFirst();@b@ demoFirst.setCode(UUID.randomUUID().toString());@b@ demoFirst.setName(UUID.randomUUID().toString());@b@@b@ return gameFirstService.insertAfterSelect(demoFirst);@b@}