Mybatis问题:前台状态传值【0】未能成功写入数据库

MyBatis 动态 SQL 中 Integer 类型字段传 0 时条件失效的排查与解决 MyBatis、OGNL、动态 SQL、Integer 0、条件失效、!= '' 陷阱 阅读详情

1、首先看一段Mybatis配置语句

 <update id="update" parameterType="StudentEntity">
        update student
        <trim prefix="set" prefixOverrides=",">
            <if test="name!= null and name!= ''">
                `name` = #{name}
            </if>
            <if test="score!= null and score!= ''">
                ,score= #{score}
            </if>
        </trim>
        where id = #{id}
    </update>

 2、问题:前台状态传值【0】未能成功写入数据库

分析:

       2.1 首先可以看到的是,语句在更新时用了trim元素,这里需要注意的一点是,需要加上prefixOverrides=",",避免set时,字段前面多逗号的问题;

       2.2前台传值score=0了,为什么语句未能修改成功?

           <if test="score!= null and score!= ''">
                ,score= #{score}
            </if>

            需要注意:在判断条件里,如果加上【and score!= ''】这个条件,将会把varchar类型为空以及int类型为0的直接排除,就不会走这个条件下的内容,改为如下方式即可:

            <if test="score!= null ">
                ,score= #{score}
            </if>

 

 

Mybatis integer类型值为0时判断条件无效问题 问题描述: 一个数据实体有一个状态标识码,一般为 integer 类型,比如,一篇文章的状态:0-编辑中 1-已发布。 然后有一个分页列表,可以进行条件查询,根据文章状态进行过滤。伪代码如下: <select id="pageArticle" resultType="xxxVO"> SELECT * FROM article <where> <if test="queryDTO.status !=null and 阅读详情

相关推荐

Vue中使用Switch开关用来控制商品的上架与下架情况、同时根据数据库商品的状态反应到前台、前台修改商品状态保存到数据库

一般后台对商品的信息管理、包含商品的上架与下架。为了提高用户的体验、将商品上下架的操作做成开关的形式。同时后台数据库中保存的商品状态能够根据开关状态改变。

日常笔记 | 干货分享 | 毕设源码 | 毕设指导 | 答辩指导 2097

mybatis中遇到值为0或false无法进行更新操作

mybatis中遇到值为0或false无法进行更新操作 原因是在xml中添加了 test="flag != null and flag != ''" 删除flag != ''判断后即可进行更新,但若全部删除flag != ''判断,当flag类型为boolen时,查询时传入类若没有添加flag值,默认为false,会被判断为与’‘相等,则只会查询flag为false的数据,若不删除查询的flag != ''判断,则无法对flag为flase的数据进行筛选 将boolen类型改成Integer后,默认为n

xhwyzz的博客 1695

CondaHTTPError: HTTP 404 NOT FOUND for url

用conda创建新环境时出现问题了。

qq_40713201的博客 1269

用mybatis更新数据,当数据为0时,无法更新

在bean中,count是long类型:private Long count;需求就是利用下面的更新语句更新bills表中的count和amout<update id="updateBills" parameterType="map" > UPDATE bills <set> <if test="count != null and count != ''"> count =

安善良民弱女子的博客 7096

保姆级教程:用CANoe手把手复现ECU刷写全流程(含BootLoader三阶段详解)

本文提供了一份详细的CANoe ECU刷写实战指南,涵盖BootLoader三阶段的深度解析。从实验环境搭建到预编程、主编程及后编程阶段,逐步讲解ECU刷写的关键步骤和隐藏逻辑,特别强调UDS诊断和CAN通信的精确控制,帮助开发者掌握ECU刷写的核心技术。

weixin_29234423的博客 526

基于Simulink的防空导弹六自由度弹道建模与仿真实战

本文详细介绍了基于Simulink的防空导弹六自由度弹道建模与仿真方法。通过分析导弹动力学原理、Simulink环境配置、气动力建模、推进与控制系统设计等关键环节,提供了一套完整的实战指南。文章特别强调了六自由度模型在防空导弹仿真中的重要性,并分享了常见问题排查与优化建议,为相关领域工程师提供实用参考。

apple5的专栏 865

解决Mybatis 无法更新数字0到数据库

今天遇到一个问题,用户购买的使用次数在从1减到0的时候,无法将0整个数字更新到数据库表中,这就相当于如果用户购买1次或曾经购买过使用到最后1次等价于无限次。所以看似很小的一个bug缺有可能导致巨大损失。 废话少说上图: Debug发现是走了更新接口的: 接下来看数据库的表现: 根源在这里: 总结:做数字字段更新的时候不要使用and number!=0或者and number!=''。否则将会被mybatis拦截。这种情况大部分是因为...

qq_16334741的博客 1898

深入解析Uplift模型评估:AUUC指标的计算与应用

本文深入解析了Uplift模型评估的核心指标AUUC。针对传统响应模型无法区分用户真实转化动因的痛点,AUUC通过量化模型对用户增益(Uplift)的排序能力,有效衡量营销干预的增量收益。文章详细拆解了AUUC的计算逻辑,从构建Qini曲线到Python代码实战,并强调了其在预算约束下的精准营销等场景的应用价值与常见陷阱。

weixin_29254029的博客 474

mybatis传入一个字段为0时失效的问题解决

1. 问题 MyBatis对于传入的Integer类型的数据,且当传入的值为0时,会发现以下判断会失效 <if test="a != null and a != '' "> and a=#{a} </if> 2. 原因 MyBatis对于传入的Integer类型的数据,且当传入的值为0时,会把它看作空字符串,所以判定会失效。 3. 解决方式 删除掉空字符串的判断,即:...

qq_39198749的博客 1054

vins-mono前端详解(2)——imu预积分

本篇文章详细讲解了vins-mono中imu预积分内容,包括复杂的公式推导。

weixin_44587828的博客 1192

基于LLM的电商数据分析系统

随着电商行业的蓬勃发展,每天都会产生海量的数据,这些数据包含了用户的行为信息、商品信息、销售数据等。如何从这些繁杂的数据中提取有价值的信息,为电商企业的决策提供支持,成为了一个关键问题。基于LLM的电商数据分析系统的目的就是利用大语言模型强大的自然语言处理和数据分析能力,对电商数据进行深入挖掘和分析,帮助企业了解市场趋势、用户需求、商品销售情况等,从而制定更加合理的营销策略、优化商品库存管理、提升用户体验等。本系统的范围涵盖了电商领域的多个方面,包括用户行为分析、商品分析、销售数据分析等。

AI Python 编程之道的博客 807

mybatis 传参 0 与 判断条件 !=‘‘ 问题及处理

记录开发中遇到的问题:背景。mybatis 传参 0 与 mybatis 传参 “” 判断条件 !='' 问题及处理

zppiio的专栏 2323

AgentScope Java 2.0 项目实战:使用AgentScope Builder 构建企业级多租户 AI Agent 平台

本文基于 AgentScope Builder 源码深度分析,系统讲解多租户 AI Agent 构建平台的完整开发流程。涵盖 Spring Boot 3.x + WebFlux 后端架构、React 18 + TypeScript 前端实现、HarnessAgent 运行时、CompositeFilesystem 多租户隔离、SSE 流式对话、6 种 IM 渠道接入(钉钉/飞书/企微/GitHub/GitLab)、Git 与 Nacos 技能市场、JWT 认证、Docker Sandbox 隔离等核心技术。

program哲学 715

Mybatis动态传参数值为0时,条件无效的问题

Mybatis动态传参数值为0时,条件无效的问题

RichardGeek的博客 1255

京东运维面试题及参考答案

cgroup(Control Group)是 Linux 内核提供的一种可以限制、控制与分离一个进程组群的资源(如 CPU、内存、磁盘 I/O 等)的机制。通过 cgroup,可以为不同的进程或进程组分配特定的资源配额,实现资源的隔离和管理。比如,在一个服务器上运行多个容器时,可以使用 cgroup 来限制每个容器对 CPU 和内存的使用,防止某个容器占用过多资源而影响其他容器的运行。cgroup 还可以对进程进行优先级设置,确保关键进程能够优先获得资源。

大模型大数据攻城狮的专栏 1235

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mybatis传0无效得问题

在Java开发过程中,通常会通过判断是否有传递参数来写活sql,那就免不了使用mybatis,最近在使用mybatis出现传0无效得情况 有个回避状态得需求,传0表示回避,传1表示不回避,传递1得时候是有效得,传0无效,会查出所有得 那是因为在mybatis中自动判断Integer为0时为false,即avoidanceState == ‘’。所以这个判断就不生效了 所以我们只需要将后面得 param.avoidanceState != ‘’ 去掉就行了 ...

weixin_49051190的博客 911

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Mybatis 0 != ““ 引发的问题

啦啦啦

邵伯的文档库 1410

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

当传入参数类型是Int时且传值为0时 mybatis会自动将0改为空串

今天写了一个条件查询接口,测试时 一个Integer类型的参数 我传值为0,但是查询结果与不传值是一样的。通过查阅资料发现当参数数据类型为Integer,并且传入的值为0时,在Mybatis会将其转化为空字符串,从而无法进入if标签中进行查询。 将整型字段判断的if标签里的 != ''删除即可 还有一点需要注意的是: 在数据库设计时,数据库表里代表状态或者类型意义的字段 最好#不要用0#来代...

Lucky辉的博客 934

mybatis 查询数值状态值时,数值0导致失效的问题

近期做项目碰到了一个奇怪的问题,大概的需求是这样的: pc端在根据状态值查询的时候,当选则状态值为0的时候,导致了mybatis 里sql 状态值判断失效,最终走了全查。 原sql: <select id="selectListByParamFromWeb" resultMap="roadShowResultMap" parameterType="java.util.Map"> SELECT * FROM ROAD_SHOW WHERE 1=1 <if test="

TianXieZuoMaiKong的博客 1202

mybatis编写sql条件值为0时无效

mybatis编写sql条件值为0时无效

qq_43600458的博客 663

mybatis integer 类型0传值问题

  &lt;if test="status!=null and status!=''"&gt; and status = '${status}' &lt;/if&gt; 当我status 传入参数为0的时候(Integer status ),到if 条件时,就不执行,被识别成 空字符串 了。and status != '' 这句去掉。 最近又遇到这个问题了,然后就再去百度了一下,还可以这...

Talk is cheap 992

Mybatis中Integer类型的值为0时,会被当做空的问题

使用Mybatis查询数据的时候,有个字段tinyint(1)类型,用来做状态判断的,本来取值是可以为0的,在mybatis中的条件里原来是这样写的: <if test="draft != null and draft !=''"> and article.draft = #{draft,jdbcType=INTEGER} </if> <if test="privacy != null and privacy !=''"> a.

王明晓的博客 2654

MyBatis中@Param所修饰的属性为Integer值为0导致动态SQL失效问题

数据库中的字段总会有visible字段来让我们的数据进行软删除,当加入业务流程后,这个visible和业务流程控制中的state(当前业务状态)产生一定的数据冗余,所以我们将visible加入到state中。 但是今天写一个接口时产生了一个问题 dao层的方法 List<CommandCheckListVO> selectByProjectId(@Param("projectId") Long projectId, @Param("state") Integer state); ma

MarsVVV的博客 571

Mybatis int类型值为0判空问题

问题现状:           项目开发时经常遇到status值的判断情况,status通常设置为int型,根据不同的status设置不同的条件用于查询或者编辑。Mybatis中经常设置非空作为if的判断条件,常见书写为: &lt;if test="status!=null and status!='' "&gt; status = #{status}, &lt;if&gt; 执行查询...

m0_37568814的博客 4567

解决mybatis的坑-integer类型为0的数据if test失效的问题

实际开发问题mybatis的坑-integer类型为0的数据

weixin_42440011的博客 1376
上一篇: 忘记密码后破解Linux系统root用户的密码
下一篇: 解决类似jar包问题:Failed to read artifact descriptor for taglibs:standard:jar:1.1.2/javax.servlet:jstl:jar
Knight-Key
博客等级 码龄9年 2357粉丝 114原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight-Key

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值