mybatis修改int型数据无法修改成0的解决
目录
- 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类型报错的解决办法
会报错如下: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Mapper method 'com.bill.springMybatis.dao.UserDao.getUserIdByName attempted to return null from a m
-
Mybatis Integer类型参数值为0时得到为空的解决方法
今日遇到的问题: 查询版本信息时,由于version是Integer类型,所以当前台选择版本为0时,变成了查询了所有的版本信息. sql片段: </if> <if test="version != null and version != '' "> AND a.version = #{version} </if> 原因: MyBatis因自身原因默认了 Integer类型数据值等于0时 为 ""(空字符串) 解决办法: 1. 某些
-
Mybatis Update操作返回值问题
后端的数据持久化使用的是 Mybatis ,在做高并发下账户增减余额的时候,打算使用乐观锁来解决这个问题.在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数.这下就尴尬了. 一般而言,我们知道当我们使用 Mybatis 在 mapper 接口中定义 insert delete 等操作,定义一个 int 类型的返回值,通过该值是否为 0 来判断数据库中受影响的行数进而判断操作是否成功. 到底 update 返回值代表
-
mybatis修改int型数据无法修改成0的解决
目录 mybatis修改int型数据无法修改成0 场景如下 过程如下 解决方法 mybatis int类型值为0判空 问题现状 问题原因 解决方法 mybatis修改int型数据无法修改成0 今天遇到一个很奇葩的问题,修改user实体里面的一个int型的状态量1.2.3........都可以修改成功,唯独参数为0时修改不成功,控制台也没有报错,一切正常.项目用的是ssm框架.最后找到问题是出在mybatis的mapper.xml里了. 场景如下 修改status的值,0为禁用,1为启用.当传入的
-
Mybatis逆工程jar包的修改和打包
上一篇文章Mybatis逆工程的使用主要是讲了mybatis-generator-core-1.3.2.jar的使用,这一篇我要介绍的是,修改jar包代码,实现生成自定义模板. 1.我们从这里可以下载mybatis-generator-core-1.3.2.jar项目源码 http://maven.outofmemory.cn/org.mybatis.generator/mybatis-generator-core/1.3.2/ 2.在eclipse下导入存在的maven项目,File->Imp
-
修改Maven settings.xml 后配置未生效的解决
1. 问题描述: 自己修改了下 ${M2_HOME}/conf/settings.xml中的本地repository地址,但是重新执行mvn的时候发现repository地址并没有改变.那么问题所在? 2. settings.xml文件位置 settings.xml文件一般存在于两个位置: 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: user.home/.m2/settings.xml (note:用户配置优先于全局配置.) 3. 配置优先级: 需要注意的是
-
mybatis判断int是否为空的时候,需要注意的3点
mybatis判断int是否为空的注意点 1.int为空时会自动赋值0,所以必须用integer作为javaBean的属性值类型. 2.必须注意封装的get.set.也是Integer.不然也会报错. 3.注意好以上两个点,直接用null判断 例子: public class ExcelPutVo { private Integer startTime;// 开始时间 private Integer endTime;// 截止时间 private int sentId;// 下达者id priv
-
C# 修改文件的创建、修改和访问时间的示例
目录 File 类 举例说明 C#FileInfo类签名 C#FileInfo构造函数 C#FileInfo属性 C#FileInfo方法 举例说明 C#实现修改文件的创建.修改和访问时间方法,主要是用到了File类的SetCreationTime.SetLastWriteTime.SetLastAccessTime几个方法.我们先来介绍一下File类: File 类 命名空间:System.IO 程序集:System.IO.FileSystem.dll 提供用于创建.复制.删除.移动和打开单一
-
mybatis 使用jdbc.properties文件设置不起作用的解决方法
这样写的时候起作用: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases
-
JavaScript CSS修改学习第三章 修改样式表
请注意代码和传统的DHTML的区别.在DHTML你通过直接修改页面上的特定元素来改变样式,而这里的代码修改的是样式表.在这里查看W3C DOM-CSS的兼容性列表.定义 一个页面总是包含一个或者几个样式表,一个样式表里面包含一条或者几条规则,一条规则里有详细的样式声明.这个页面的样式表如下: 复制代码 代码如下: <link rel="stylesheet" href="../quirksmode.css"> <style> <!--
-
intellij idea修改maven配置时总是恢复默认配置的解决方法idea版本(2020.2.x)
该方法针对idea版本(2020.2.x) C:\Users\yanghao\AppData\Roaming\JetBrains\IntelliJIdea2020.2\options\project.default.xml <component name="MavenImportPreferences"> <option name="generalSettings"> <MavenGeneralSettings> <opti
-
sqlserver 2008手工修改表结构,表不能保存的问题与解决方法
如果点击"保存文本文件"将会弹出保存文本文件的对话框口, 保存的文本文件中的内容是如下: /* 2010年4月5日0:34:53 用户: 服务器: LONGGEL 数据库: longgel 应用程序: */ ChildCaiClass 保存的对于我来说简直是没用的信息,只是记录了事务的发生时间和一些相关信息,结果这样操作了数据库的结构还是没能修改并保存,而是继续弹出上面的那个窗口,这下我就郁闷了. 点击"取消"却弹出 同样也是没有完成表
-
计算机名称修改后Oracle不能正常启动问题分析及解决
前一阵子,在下给老妹装好oracle后,发现老妹的计算机名称好长,不容易记,于是一时手痒,将其计算机名称更改了一下,没想到就这一步操作,可苦坏了俺老人家了,一场悲剧即将开始! 当更改计算机名称,重启电脑后,发现oracle不能启动了.当时俺就想呀,差哪呀,安装完成后,oracle还是可以启动的呢,怎么现在就不行了呢.经过俺老人家仔细的回忆,才发现罪魁祸首就是俺随手更改的计算机名称.因为oracle启动的监听,代理等都是与计算机名称绑定在一起的. 俺马上使出俺唯一的杀手戬--google,经过网上
随机推荐
- thinkphp的CURD和查询方式介绍
- Android实现RecyclerView下拉刷新效果
- vue组件watch属性实例讲解
- Mysql数据库之主从分离实例代码
- 图文演示Flash+ASP实现用户登录/注册程序第1/2页
- Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
- 彻底弄懂CSS盒子模式系列教程集合
- 更牛的一句话asp木马加密(去掉asp里的%)
- PHP+JS三级菜单联动菜单实现方法
- jsp要实现屏蔽退格键问题探讨
- Java中的Static class详解及实例代码
- 重构、标准、布局
- Javascript SHA-1:Secure Hash Algorithm
- jquery文字填写自动高度的实现方法
- Nginx服务器相关的一些安全配置建议
- 解决spring boot 1.5.4 配置多数据源的问题
- Android开发笔记之:深入理解多线程AsyncTask
- Java 调整格式日志输出
- JavaEE账号注册模拟网站邮箱激活
- SQL+C#实现获得当前月的第一天与最后一天