mybatis修改int型数据无法修改成0的解决_java

来源:脚本之家  责任编辑:小易  
目录
mybatis修改int型数据无法修改成0场景如下过程如下解决方法mybatis int类型值为0判空问题现状问题原因解决方法

mybatis修改int型数据无法修改成0

今天遇到一个很奇葩的问题,修改user实体里面的一个int型的状态量1.2.3........都可以修改成功,唯独参数为0时修改不成功,控制台也没有报错,一切正常。项目用的是ssm框架。最后找到问题是出在mybatis的mapper.xml里了。

场景如下

修改status的值,0为禁用,1为启用。当传入的值为0时,就会修改失败。

过程如下

这是mybatis更新语句中的修改状态量部分,查阅资料后得知问题出在status='' 这里,如果有这个条件则当参数为0时判断结果为false,则不会将0 set进数据库。(折腾了一晚上没有成功配置log4j打印mybatis解析出的sql语句,这里无法展示sql语句)具体原因还得参考源码才能找到答案,由于本人能力有限这里还是留给以后的自己和各位大牛查找吧。

解决方法

1.去掉status='' 即<if test="status != null">即可

2.改写成 <if test="status != -1">

mybatis int类型值为0判空

问题现状

项目开发时经常遇到status值的判断情况,status通常设置为int型,根据不同的status设置不同的条件用于查询或者编辑。Mybatis中经常设置非空作为if的判断条件,常见书写为:

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

执行查询及编辑当status=0时,查询结果没有查出status=0的用户信息,编辑用户的状态也没有修改成功,但是后台显示传值正确(后台打印信息如下所示)。

修改用户信息

{id=22, username=wangzichun, password=******, email=, telephone=45643, roleId=2, status=0}

问题原因

当status值为0时,Mybatis将作为if条件中的false结果,即不执行此if里面的内容,所以当status=0时,if条件中的设置的过滤或者修改字段及字段取值没有设置成功,导致查询和编辑status=0时不成功。

解决方法

将status的if条件设置为<if test="status = -1">或者只写<if test="status !=null">

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

您可能感兴趣的文章:Mybatis返回int或者Integer类型报错的解决办法Mybatis Integer类型参数值为0时得到为空的解决方法Mybatis Update操作返回值问题

  • 本文相关:
  • java中深复制知识点详解
  • java 高并发七:并发设计模型详解
  • scala之object的具体使用(小结)
  • 浅谈spring boot 开发rest接口最佳实践
  • spring data jpa实现分页和排序代码实例
  • spring远程调用httpclient/resttemplate的方法
  • java 定时器的多种实现方式
  • idea离线使用jrebel的超详细教程
  • 基于javaswing设计和实现的酒店管理系统
  • rxjava2.x+retrofit2.x多线程下载文件的示例代码
  • SQL SERVER 如何添加一个默认值是0的int 型字段
  • sql 2008 中,将int数据类型如何转换为string?
  • plc中的 INT和DINT数据如何设置初始数值
  • 在oracle中怎样建立一个表的字段为int型长度为4
  • 用 INSERT 语句 向数据库 插入 可以为空的 INT型数据
  • MFC中如何吧CString类型转换为double或int型??
  • c/c++ 如何将一个int型以字符串的形式写入文件
  • 一个C++题目:输入一个int型整数,将它的低4位(右4位)设置为1,输...
  • 在C语言中,int型常量包不包括负数
  • mybatis增删改返回的int是什么意思
  • 请教:Step7里面的数据类型中,INT和WORD有什么区别?
  • 数据库中日期是int型,怎么将数据库中的日期取出来变成date型...
  • JSP程序 如何定义数据库类型为bigint的字段 为int型
  • 有关JAVA问题,如何验证一个变量是否为int型?且不为空呢?
  • 关于C语言中 char 型负数赋值给int
  • 在MFC下想把INT型变成CString型的,用FORMAT可以么?
  • c#数据库表中有一列字段是int型,我使用存储过程 给该字段赋值...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言r语言其它相关首页javamybatis返回int或者integer类型报错的解决办法mybatis integer类型参数值为0时得到为空的解决方法mybatis update操作返回值问题java中深复制知识点详解java 高并发七:并发设计模型详解scala之object的具体使用(小结)浅谈spring boot 开发rest接口最佳实践spring data jpa实现分页和排序代码实例spring远程调用httpclient/resttemplate的方法java 定时器的多种实现方式idea离线使用jrebel的超详细教程基于javaswing设计和实现的酒店管理系统rxjava2.x+retrofit2.x多线程下载文件的示例代码intellij idea 2020最新激活码(亲java使double保留两位小数的多方intellij idea 2020.2.3永久破解java8 十大新特性详解idea2020.2.2激活码与intellij iidea 2020版本最新破解教程可激活2020.2 intellij idea激活与ideajava.net.socketexception: connjava写入文件的几种方法分享java 十六进制与字符串的转换解决springboot打成jar运行后无法读取resjava用 rhino/nashorn 代替第三方 json 转java爬取豆瓣电影数据的方法详解spring boot 中的servlet简单使用java内存释放实现代码案例spring jdbc具名参数使用方法详解java多线程编程之从线程返回数据的两种方springcloud整合consul的实现java使用itextpdf生成pdf文件的实现方法零基础如何系统的学习java
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved