返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis有时update语句执行无效的解决方案
  • 698
分享到

mybatis有时update语句执行无效的解决方案

2024-04-02 19:04:59 698人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录项目里mybatis有时update语句执行无效解决办法执行update语句后,数据没有被更新,也没有报错问题描述详细情况解决办法项目里mybatis有时update语

项目里mybatis有时update语句执行无效

公司测试人员在测试的时候发现,在积分系统,消费产生了积分,有时候,却不能加到用户累计积分上去。

明明积分流水记录跟用户积分的增加在一个事务当中的。积分流水记录生成成功,偏偏用户积分没有加上去?奇了怪了。

加积分的代码是:


tMemberPointMapper.updateByPrimaryKeySelective(tMemberPoint);

然后在相应的位置,加了日志,记录更新语句前后的对比。

测试人员再次发现问题时查看了日志,日志显示更新语句执行后的对象确实是有累加过积分的。为什么数据库表中的值就是没变呢?

于是百度啊,这种情况百度的结果比较少,有的说是mybatis的版本的问题?个人感觉不太可能,因为这个mybatis版本在很多项目是使用,都没出过问题。事务也是测试过,有异常能够回滚。

后来冷静下来想了想出现问题的时机。测试人员在消费操作过后,会立刻点查看用户积分的界面。这时会调获取用户积分信息的接口。因为这个接口,不仅仅是查询,因为等级维持机制(过一定的周期,要扣掉一部分积分), 它在查询前,对用户积分有修改的操作。所在,查询用户积分的接口,也处在非只读的事务中。

当两个对同条用户积分记录操作的事务同时执务(InnoDb的行级,排它锁),由于,Mysql的默认隔离级别是repeatable-read,事务A和事务B,读到数据为a,后事务B修改了数据为b,提交了,而事务A再执行修改操作,又会把数据b修改为数据a。这就出现了,题中所述的,偶尔出现update语句执行无效的假象。

解决办法

悲观锁 在查询语句后加 for update ,锁住事务中,查询用户积分的语句。


 <select id="selectByExample" resultMap="BaseResultMap" parameterType="com.ice.pojo.f3.TMemberPointExample" >
    select
    <if test="distinct" >
      distinct
    </if>
    <include refid="Base_Column_List" />
    from t_member_point
    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
    for update
  </select>

执行update语句后,数据没有被更新,也没有报错

记录一下今天遇到的一个问题:

问题描述

执行update语句后,数据没有被更新,也没有报错

详细情况

通过传参的方式,在控制台打印出的sql语句;将sql语句拷贝到数据库执行也是OK

解决办法

百思不得其解,到底问题出在了那里?

所以,试了很多方法,最后才发现某一个字段的问题;但是从控制台打印的sql语句来看,参数值也是OK的啊;

然后我尝试将mapper中sql语句的参数写成控制台打印出来的参数,直接确定下来,运行,发现也是OK的,那么确定是这个参数问题了;

但是映射啥的都没问题,所以问题就有可能在数据库存的这个字段的长度问题了,最后发现数据库该字段的长度长于传的参数的值,而且在实体类中使用trim()对属性值做了处理,所以问题就在这里,修改一下就好了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: mybatis有时update语句执行无效的解决方案

本文链接: https://lsjlt.com/news/158523.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatis有时update语句执行无效的解决方案
    目录项目里mybatis有时update语句执行无效解决办法执行update语句后,数据没有被更新,也没有报错问题描述详细情况解决办法项目里mybatis有时update语...
    99+
    2024-04-02
  • mybatis中update语句执行无效怎么解决
    这篇文章主要讲解了“mybatis中update语句执行无效怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis中update语句执行无效怎么解决”吧!项目里myb...
    99+
    2023-06-21
  • mybatis执行update批量更新时报错的解决方案
    目录执行update批量更新时报错在使用Mybatis 批量更新时定义Mapper  Dao接口中定义最后在service中调用同时执行多条sql的办法执行upd...
    99+
    2024-04-02
  • Mybatis执行update失败的解决
    目录Mybatis执行update失败接口原因解决办法Mybatis插入(更新)失败 却不报错问题描述解决方案Mybatis执行update失败 今天在进行分布式重构项目的...
    99+
    2024-04-02
  • Java赋值语句执行无效如何解决
    如果Java赋值语句执行无效,有几个可能的原因和解决方法: 检查变量类型:确保被赋值的变量类型与赋值的值类型匹配。如果类型不匹配...
    99+
    2023-10-27
    Java
  • sql无效字符执行sql语句报错的解决方法
    本篇文章为大家展示了sql无效字符执行sql语句报错的解决方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。说起来惭愧,总是犯一些小错误,纠结半天,这不应为一个分号...
    99+
    2024-04-02
  • Oracle执行Update语句的几种方式
    Oracle没有update from语法,可以通过四种写法实现同样的功能: 一、标准update语法(常用、速度可能最慢) 当更新的表示单个或者被更新的字段不需...
    99+
    2024-04-02
  • mybatis执行update批量更新时报错怎么解决
    今天小编给大家分享一下mybatis执行update批量更新时报错怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-06-29
  • Mybatis注解开发@Select执行参数和执行sql语句的方式
    执行传参 @Select 是 Mybatis 框架中的一个注解,用于执行 SQL 查询语句,并把查询结果映射到指定的 Java 对象中。 具体来说,@Select 注解会将注解中的 SQL 查询语句交给 Mybatis 框架进行解...
    99+
    2023-09-17
    mybatis sql java
  • 使用mybatis执行SQL语句时有参数出现返回NULL值如何解决
    今天就跟大家聊聊有关使用mybatis执行SQL语句时有参数出现返回NULL值如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。原来的写法:<select id=...
    99+
    2023-05-31
    mybatis sql null
  • Mybatis-Plus全局配置无效的解决方案
    目录全局配置无效Mybatis-plus简单配置及应用mybatis-plus条件构造mybatis generator条件构造全局配置无效 依赖         <depen...
    99+
    2024-04-02
  • docker容器无法执行vim的解决方案
    目录docker容器无法执行vim【已解决】docker容器中执行vim失败安装文件没更换之前,速度非常的慢【失败】这里我更换了163的但是报错【失败】这里我更换了阿里的第一种报错【...
    99+
    2023-05-20
    docker容器无法执行vim docker无法执行vim docker vim
  • MyBatis拼接批量SQL语句执行报错怎么解决
    这篇文章主要讲解了“MyBatis拼接批量SQL语句执行报错怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MyBatis拼接批量SQL语句执行报错怎...
    99+
    2024-04-02
  • SQL语句的执行方式有哪些
    SQL语句的执行方式有以下几种:1. 交互式执行:即通过命令行或者可视化工具直接输入SQL语句并执行,结果即时显示。2. 批处理执行...
    99+
    2023-09-23
    SQL
  • 解决mybatis 执行mapper的方法时报空指针问题
    mybatis报空指针 今天在test类掉用service层往数据库存数据的时候,控制台报空指针异常。找了很久找不到原因。 解决 配置文件,注解,依赖都是对的。 最后发现是因为在te...
    99+
    2024-04-02
  • SpringMVC AOP注解无效,切面不执行的解决方法
    本篇内容主要讲解“SpringMVC AOP注解无效,切面不执行的解决方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringMVC AOP注解无效,切面不执行的解决方法”吧!AOP注解无...
    99+
    2023-06-20
  • IDEA报错:无效的源发行版解决方案
    目录问题描述解决方案:总结IDEA 报错:无效的源发行版 问题描述 从SVN拉项目代码到本地后用idea运行,发现几个报错,关键的一个是:无效的源发行版,考虑是JDK版本问题 解决...
    99+
    2024-04-02
  • MyBatis中PageHelper不生效的解决方案
    MyBatis中PageHelper不生效 今天使用pageHelper,发现设置了PageHelper.startPage(page, pageSize);pageSize设置为1...
    99+
    2024-04-02
  • MySQL优化语句执行的方法有哪些
    这篇文章主要介绍“MySQL优化语句执行的方法有哪些”,在日常操作中,相信很多人在MySQL优化语句执行的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL优...
    99+
    2024-04-02
  • Mybatis执行多条语句/批量更新的方法是什么
    本篇内容主要讲解“Mybatis执行多条语句/批量更新的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mybatis执行多条语句/批量更新的方法是什么”吧!Mybatis执行多条语句/...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作