使用mybatis-plus想要修改某字段为null问题
目录
- mybatis-plus想要修改某字段为null
- 问题场景
- 原因
- 解决办法
- mybatis-plus更新字段为null不生效
- 异常说明
- 原理
- 解决办法
- 总结
mybatis-plus想要修改某字段为null
问题场景
使用mybatis + mybatisPlus进行修改某字段,想要将其设为null, 但执行时没有成功。
原因
mybatis-plus会将所有为空的字段在修改时进行过滤,不进行设为空的修改操作。
解决办法
在相关字段上加上注解
@TableField(strategy = FieldStrategy.IGNORED)
例:
@TableField(strategy = FieldStrategy.IGNORED) private Long classId;
mybatis-plus更新字段为null不生效
异常说明
mapper.updateById()时,set为null未生效,其他字段更新
periodRecordOriginal.setSettleTime(null); periodRecordOriginal.setActualSettleTime(null); periodRecordOriginal.setSettleStatus(0); int i = periodRecordMapper.updateById(periodRecordOriginal);
原理
MyBatis-Plus对字段的验证策略导致的,MyBatis-Plus默认进⾏了不是全量更新的策略,默认忽略为null 的字段的
解决办法
1)修改MyBatis-Plus 全局默认策略
缺点:这样做会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null
mybatis-plus: global-config: #字段策略 0:"忽略判断",1:"非 NULL 判断",2:"非空判断" field-strategy: 0
2)修改实体类注解,改变字段的忽略判断
缺点:需要注意数据库字段是否设置为 非null ,如果为非null 也更新不成功
@TableField( updateStrategy = FieldStrategy.IGNORED) private Date settleTime;
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Mybatis-Plus使用updateById()、update()将字段更新为null
目录 问题背景 问题原因 解决方案 问题背景 昨晚同事找我帮他看一个问题,他使用mybatis-plus中提供的updateById方法,想将查询结果中某个字段原本不为null的值更新为null(数据库设计允许为null),但结果该字段更新失败,执行更新方法后还是查询的结果. 问题原因 mybatis-plus FieldStrategy 有三种策略: IGNORED:0 忽略 NOT_NULL:1 非 NULL,默认策略 NOT_EMPTY:2 非空 而默认更新策略是NOT_NULL:非 NU
-
mybatis-plus更新字段为null的处理方式
目录 mybatis-plus更新字段为null处理 该如何设置? mybatis-plus将字段修改为null 注意事项 mybatis-plus更新字段为null处理 在mybatis-puls重设置的全局更新策略 为null的字段忽略更新.但是在某些业务需求下面,可能需要某些字段更新为null值. 该如何设置? mybatis-plus将字段修改为null myBatis Plus 版本3.1.2及以上 @TableField(strategy = FieldStrategy.IGNORE
-
mybatis plus更新字段为null处理方法
目录 测试代码如下 数据库表 实体类 mapper controller 运行测试 运行测试 mybatis plus 将字段更新为 null,默认如果不做任何处理,使用 mybatis plus 自带的更新方法是不能将字段更新为 null 的,如果要将字段更新为 null,需要做下面的处理 在需要的字段上加 @TableField 注解,并设置属性 updateStrategy = FieldStrategy.IGNORED 测试代码如下 数据库表 实体类 package com.sbmp.b
-
使用mybatis-plus想要修改某字段为null问题
目录 mybatis-plus想要修改某字段为null 问题场景 原因 解决办法 mybatis-plus更新字段为null不生效 异常说明 原理 解决办法 总结 mybatis-plus想要修改某字段为null 问题场景 使用mybatis + mybatisPlus进行修改某字段,想要将其设为null, 但执行时没有成功. 原因 mybatis-plus会将所有为空的字段在修改时进行过滤,不进行设为空的修改操作. 解决办法 在相关字段上加上注解 @TableField(strategy =
-
Java的MyBatis框架中关键的XML字段映射的配置参数详解
properties 这些是外部化的,可替代的属性,这些属性也可以配置在典型的Java属性配置文件中,或者通过properties元素的子元素来传递.例如: <properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="pas
-
解决django model修改添加字段报错的问题
关于django models中添加字段的一个小节,记录下 django的models中已经写好了字段,可是后面我又想在添加一些字段,于是就在models中添加了字段 ,发现报错了 报错的类型: 字段重复了 不知道的列 : 最后解决的方法 : 到models的目录下打开文件 ,直接把所需的字段添加到第一次编译的文件中 , 重新执行数据库的迁移 ,如果依然有报错,提示有未知的列 ,就查看数据库 ,那个列缺失,就把列给添加上 添加未知的列 至此,重新执行迁移 ,妥妥的成功了 ! 以上这篇解决djan
-
Mybatis配置返回为修改影响条数方式
目录 Mybatis配置返回为修改影响条数 使用xml配置update语句返回影响的记录行数 解决办法 Mybatis配置返回为修改影响条数 mybatis执行update()方法默认返回为匹配的更新记录条数,现在需要将update()方法修改为与mysql执行一致返回影响条数,修改jdbc连接如下即可:添加useAffectedRows=true配置. jdbc:mysql://jdbc.host/{jdbc.db}?useAffectedRows=true 使用xml配置update语句返回
-
mybatis返回map类型数据空值字段不显示的解决方案
目录 mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 ResultType利用实体返回 springMVC+mybatis查询数据 mybatis返回map空值未返回字段 mybatis开启CallSettersOnNulls mybatis返回map数据空值字段不显示 查询sql添加每个字段的判断空 IFNULL(rate,'') as rate ResultType利用实体返回 不用map springMVC+mybatis查询数据 返回resultType=”m
-
mybatis自定义参数类型转换器数据库字段加密脱敏
目录 1 问题背景 2 解决方案 2.1 使用数据库加密算法 2.2 使用mybatis的自定义参数类型转换器 3 一般web项目使用 3.1 创建自定义Java类型 3.2 自定义类的转换处理器 3.3 配置自定义类型和类型转换器 3.4 查询使用 3.5 新增修改使用 4. springboot项目使用 4.1 配置自定义类型和类型转换器 4.2 mybatis-plus的使用 1 问题背景 在数据库存储人员的信息时,有一些信息是敏感数据,如身份证号.出生地等.为了防止信息泄漏,这些信息不允
-
oracle+mybatis 使用动态Sql当插入字段不确定的情况下实现批量insert
最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰. 先来看一下最终我是怎么实现的: <insert id="batchInsertLine" parameterType="HashMap"> <![CDATA[ INSERT INTO tg_fcst_lines(${lineColumn}) select result.*,sq_fcst_lines.next
-
Mybatis动态调用表名和字段名的解决方法
一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到.这种情况下,就需要构建sql来动态传入表名.字段名了.现在对解决方法进行下总结,希望对遇到同样问题的伙伴有些帮助. 动态SQL是mybatis的强大特性之一,mybatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此处对动态sql进行处理.下面让我们先
-
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='张三
随机推荐
- 浅谈ECMAScript6新特性之let、const
- BootStrap的双日历时间控件使用
- 最近比较流行的数据库挂马
- php封装的验证码工具类完整实例
- php关键字仅替换一次的实现函数
- C#实现窗体淡入淡出效果的方法总结
- Android中利用SurfaceView制作抽奖转盘的全流程攻略
- PHP使用redis实现统计缓存mysql压力的方法
- js中通过getElementsByName访问name集合对象的方法
- 一些Linux Shell中的权限相关知识总结
- 让按钮失效5秒的js代码
- SQL Server纵表与横表相互转换的方法
- asp.net创建事务的方法
- Win2003中apache2整合tomcat5和IIS6的方法
- linux修改mac地址方法分享
- java实现从网上下载图片到本地的方法
- 易语言编写截图软件教学
- JSP数据交互实现过程解析
- 详解webpack的文件监听实现(热更新)
- mysql单字段多值分割和合并的处理方法