mybatis查询字段为null设置为0的操作
背景
使用mybatis查询(mysql)时,会使用多个double字段做相加,但是呢,其中几个字段有可能是null,会抛空指针。
解决方法
自动生成的mybatis mapper文件长这样
<sql id="Base_Column_List"> ID, PREPAYMENT_FEE </sql>
修改它
<sql id="Base_Column_List"> ID, ifnull(PREPAYMENT_FEE,0) as PREPAYMENT_FEE </sql>
补充:mybatis中0和null关系处理
最近在项目开发中,mybatis遇到一个很奇怪的问题,因为想在后台传一个int型0插入到数据,却被识别成了null。
后面,排除问题时,查到mybatis源码对其进行了强制定义。
所以解决问题可以改造mybatis源码,或者简单的做以下处理:
<insert id="insertDemo" parameterType="java.util.Map"> INSERT INTO TABLE <trim prefix="(" suffix=")" suffixOverrides=","> <if test="importRow != null and importRow != '' or importRow ==0 "> IMPORT_ROW, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="importRow != null and importRow != '' or importRow ==0 "> #{importRow}, </if> </trim> </insert>
增强判断添加 or importRow ==0
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
解决mybatis plus字段为null或空字符串无法保存到数据库的问题
背景 项目中集成了mybatis plus, 今天在做后台的一个常规的增删改查时,发现字段值为null时,这个字段不会被保存到数据库 解决办法 在字段上加上 @TableField(strategy = FieldStrategy.IGNORED) strategy字段更新插入策略属性说明: IGNORED(0): "忽略判断", 所有字段都更新和插入 NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL值 NOT_EMPTY(2): &quo
-
解决mybatisPlus null 值更新的问题
发现mybatisPlus会更新对象属性为null的值, 与field-strategy配置有关 mybatis-plus: global-config: db-config: field-strategy: not_null 在3.1.0版本中,其选择的值有 public enum FieldStrategy { IGNORED, NOT_NULL, NOT_EMPTY, DEFAULT; private FieldStrategy() { } } 我刚开始选择的是ignored,所以null
-
MyBatis Plus更新对象无法设空值解决方案
原因 因为 MyBatis-Plus 自带的更新方法,都有对对象空值进行判空.只有不为空的字段才会进行数据更新. 解决方式 在实体类对应的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判断,例如: @TableField(updateStrategy = FieldStrategy.IGNORED) private String address; 示例: 1.未加注解(无法设入空值,见代码结果): //实体private St
-
mybatis查询字段为null设置为0的操作
背景 使用mybatis查询(mysql)时,会使用多个double字段做相加,但是呢,其中几个字段有可能是null,会抛空指针. 解决方法 自动生成的mybatis mapper文件长这样 <sql id="Base_Column_List"> ID, PREPAYMENT_FEE </sql> 修改它 <sql id="Base_Column_List"> ID, ifnull(PREPAYMENT_FEE,0) as PRE
-
MyBatis查询数据返回null的解决
MyBatis查询返回null 可能原因 SQL语句查询条件有问题 数据库中没数据 返回字段与Entity的属性不对应 解决方案 针对 SQL语句查询条件有问题.数据库中没数据 建议将SQL手动拼接之后去数据库中运行一下看看结果. 针对 返回字段与Entity的属性不对应,检查entity属性是否是因为驼峰命名导致字段不对应返回了null: 可以去配置一下开启驼峰,这里不做详解:或者用resultMap作为返回结果,如图 到此这篇关于MyBatis查询数据返回null的解决的文章就介绍到这了,更
-
mysql中查询字段为null的数据navicat问题
目录 mysql查询字段为null的数据navicat mysql中字段为空,null值遇到坑了 解决办法 总结 mysql查询字段为null的数据navicat 查询数据为null的数据varchar字段 默认为(null)所以查询的语句是 select * from cases where name is null 查询字段为null select * frim cases where name is not null 查询字段不为null mysql中字段为空,null值遇到
-
解决mybatis查询结果为null时,值被默认值替换问题
目录 查询结果为null时,值被默认值替换 问题原因 解决办法 mybatis查询结果处理 处理核心流程 返回类型处理ResultHandler 字段类型处理TypeHandler 查询结果为null时,值被默认值替换 问题:pojo种设置了一个默认值,当此字段查询结果为空时,字段值变成了默认值0,经过排查发现,mybatis在赋值时并没有调用set方法赋值,而是直接调用get方法,取了默认值 问题原因 原因是因为mybatis在给map赋值时,如果返回值不是基本数据类型,且返回值为null,就
-
Mybatis查询语句返回对象和泛型集合的操作
Mybatis查询语句返回对象和泛型集合 EmpMapper映射接口: package cn.et.mybatis.lesson03; import java.util.List; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; public interface EmpMap
-
mybatis查询到了数据,但是实体类个别字段为null问题
目录 mybatis查询数据,实体类个别字段为null 最终的最终发现 查询的数据中有几个列为null 封装不上 sql语句查询存在的列显示不存在 问题 数据 小结一下 mybatis查询数据,实体类个别字段为null 今天在做一个简单的查询操作时遇到的坑,折腾了好久好久,有必要记录一下本菜鸡的心理活动 debug单步执行发现查询之后有几个字段没有映射成功,依然为null 而控制台打印的sql语句确实拿到了 想着是不是实体类里面的字段命名不一致,瞪大狗眼看了一万遍也没发现有啥不一样. 又试着在s
-
MySQL查询空字段或非空字段(is null和not null)
现在我们先来把test表中的一条记录的birth字段设置为空. mysql> update test set t_birth=null where t_id=1; Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 0 OK,执行成功! 设置一个字段值为空时的语法为:set <字段名>=NULL 说明一下,这里没有大小写的区分,可以是null,也可以是NULL. 下面看看结果: mysql&
-
MySQL中查询字段为空或者为null的方法
目录 MySQL查询字段为空或者为null 判断为null 判断为空或空格 MySQL查询字段为空(null)时设置默认值 总结 MySQL查询字段为空或者为null 判断为null select * from table where column is null; 不为null: select * from table where column is not null; 判断为空或空格 select * from table where column =''; 注:不管是空还是其中有空格都
-
MyBatis查询时属性名和字段名不一致问题的解决方法
问题 当我们数据库中的字段和实体类中的字段不一致的时候,查询会出问题 数据库字段是 pwd id name pwd 1 张三 123456 2 李四 123456 3 王五 123456 4 赵六 123456 实体类字段是 password public class User { private int id; private String name; private String password; } 查出来结果发现, password 是 null User{id=1, name='张三
随机推荐
- AngularJs 指令详解及示例代码
- Perl 批量添加Copyright版权信息
- CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
- 解析jQuery与其它js(Prototype)库兼容共存
- nodejs和php实现图片访问实时处理
- myeclipse5.5注册机 Myeclipse6.0M1 Key序列号
- IE iframe的onload方法分析小结
- 简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
- android中TabHost的图标(48×48)和文字叠加解决方法
- vue双向数据绑定原理探究(附demo)
- PHP反射类ReflectionClass和ReflectionObject的使用方法
- Python 常用string函数详解
- 用javascript删除当前行,添加行(示例代码)
- oracle排名函数的使用方法分享
- 通过js为元素添加多项样式,浏览器全兼容写法
- Android实现多次闪退清除数据
- php抛出异常与捕捉特定类型的异常详解
- CentOS7挂载新数据盘的完整步骤
- 一键安装mysql5.7及密码策略修改方法
- Android 8.0中一些坑以及对应的解决方法