当前位置: 首页 > wzjs >正文

站长之家收录查询长沙百度地图

站长之家收录查询,长沙百度地图,佛山最好的网站建设,呼和浩特微信小程序公司问题: 这段代码count输出1,response输出null,为什么?已知查询条件匹配,数据库连接的同一个(测试环境),没有读写分离读(主库写,从库读,SHOW SLAVE STATUS)&am…

问题:

这段代码count输出1,response输出null,为什么?已知查询条件匹配,数据库连接的同一个(测试环境),没有读写分离读(主库写,从库读,SHOW SLAVE STATUS),不存在主从同步延迟问题。

SELECT @@transaction_isolation查出的事务隔离级别是READ-COMMITTED。

DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);MyBean dto = new MyBean();
dto.setName("test");
Integer count = writeDao.insert(dto);
log.info(count);
MyBean response = readDao.selectByName("test");
log.info(response);transactionManager.commit(status);

解析:

在 READ-COMMITTED 隔离级别下,数据库的行为是:

  • 只能读取已提交的数据,防止脏读(读取未提交的数据)。

  • 在一个事务中,未提交的数据对当前事务的后续查询不可见,即使是同一个事务中的操作。

代码逻辑

  • 事务开始:transactionManager.getTransaction(def) 创建一个新事务(PROPAGATION_REQUIRED)。

  • 插入数据:writeDao.insert(dto) 执行插入操作,count 输出 1,说明插入成功。但此时数据尚未提交。

  • 查询数据:readDao.selectByName("test")执行查询。由于事务尚未提交,且隔离级别是 READ-COMMITTED,插入的数据对当前查询不可见,因此返回 null。

  • 提交事务:transactionManager.commit(status) 提交事务,插入的数据才对其他事务可见。

可能的原因:

1.在 READ-COMMITTED 隔离级别下,未提交的数据(即 insert 插入的数据)在事务提交之前不可见。因此,selectByName 查询不到刚插入的数据,返回 null 是符合预期的行为。 

解决:

(1) 在同一事务中直接查询(不依赖隔离级别)

如果必须在同一事务中查询,可以直接通过主键或插入后返回的自增 ID 查询记录,而不是依赖 selectByName 的逻辑。

 Long insertedId = dto.getId(); // 需确保 insert 方法返回 IDMyBean response = readDao.selectById(insertedId);

直接通过 ID 查询记录,可以绕过隔离级别的影响(因为同一事务中的插入操作对后续查询可见)

(2) 降低隔离级别(谨慎操作)

可以将隔离级别临时降低到 READ-UNCOMMITTED,这样未提交的数据对当前事务可见。但这会导致脏读问题(读取未提交的数据,如果事务回滚,读取的数据可能是错误的),不推荐在生产环境中使用。

设置隔离级别(MySQL 示例):

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
http://www.dtcms.com/wzjs/529649.html

相关文章:

  • 手机做网站的百度平台营销软件
  • 百度做自己的网站链接交换平台
  • 网站被模仿如何维权seo入门基础知识
  • 做网站诈骗宁波网站推广方案
  • 深圳做微商网站公司自己开平台怎么弄啊
  • 这样做自己公司的网站品牌营销的四大策略
  • wordpress互访页面东莞网站seo推广
  • 太原专业网站建设精准客户运营推广
  • 个人智慧团建网站外贸获客软件
  • 怎么做一个购物平台网站市场营销十大经典案例
  • 河曲县城乡建设管理局网站今天晚上19点新闻联播直播回放
  • 网站模板怎么用写手接单平台
  • 网站如何做关键词排名seo培训多少钱
  • 学技术网站友情链接英文
  • 泰州做网站开封网站优化公司
  • 桂林做网站哪家公司好品牌营销是什么
  • 跨境电商独立站是什么关键词seo价格
  • 镇江做网站seo如何做公司网站推广
  • 在线编辑图片的网站有哪些长春关键词优化排名
  • 阿里巴巴做网站的千锋教育学费多少
  • 美妆网站开发规划书免费网站电视剧全免费
  • 科技公司官网百度网站排名seo
  • 网站建设怎么报价表开封seo公司
  • 东宁做木耳招工人网站专业的网站优化公司排名
  • 虚拟主机管理系统源码厦门百度整站优化服务
  • 网站开发专业简历模板网页浏览器
  • 在淘宝上做代销哪个网站好在线友情链接
  • 深圳网站网站建设百度seo找哪里
  • 东营做网站优化的公司技能培训有哪些科目
  • wordpress网站服务器配置整站优化全网营销