MybatisPlus中updateById方法不能更新空值如何解决


这篇文章主要介绍了MybatisPlus中updateById方法不能更新空值如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MybatisPlus中updateById方法不能更新空值如何解决文章都会有所收获,下面我们一起来看看吧。在Mybatis-Plus中调用updateById方法进行数据更新默认情况下是不能更新空值字段的。而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况。
那么如果让Mybatis-Plus中的updateById方法支持空值更新呢?实体User:updateById方法单元测试:执行结果:可以看到由于email字段的值为null,所以执行updateById方法时没有对email字段进行更新。Mybatis-Plus中字段的更新策略是通过FieldStrategy属性控制的。在实体字段上,如果不通过@TableField注解指定字段的更新策略,字段默认的更新策略是FieldStrategy.DEFAULT,即跟随全局策略。而Mybatis-Plus的全局配置中,字段的默认更新策略是FieldStrategy.NOT_NULL,即进行空值判断,不对NULL值数据进行处理。如果只需要实体中的几个字段支持空值更新,则通过@TableField注解指定字段的更新策略为FieldStrategy.IGNORED,忽略空值判断,直接更新即可。
该方式的控免费云主机域名制级别是字段级别的控制。实体User:再次执行上面的单元测试:email字段虽然是空值,但仍然进行了更新操作,说明此时email字段已经支持空值更新。如果需要全局所有实体的更新操作都需要支持空值更新,可以修改Mybatis-Plus的全局更新策略。
该方式的控制级别是项目级别的控制。在spring boot中修改如下属性即可:测试:
实体User:单元测试:执行结果:age和email字段都支持空值更新,说明全局更新策略ignored生效。Mybatis-Plus中自带的扩展方法alwaysUpdateSomeColumnById会忽略字段的更新策略,直接对实体中的每一个字段都执行更新操作。
如果你不想修改全局的字段更新策略,又需要项目中某个实体的所有字段都支持空值更新,推荐采用该方法。
该方式的控制级别是实体级别的控制。实现步骤:1、继承DefaultSqlInjector扩展sql注入器,注入AlwaysUpdateSomeColumnById方法2、将扩展的sql注入器配置到spring容器中3、扩展自己的通用Mapper接口CommonMapper4、UserMapper继承自定义的CommonMapper5、实体User6、单元测试执行结果:虽然没有修改Mybatis-Plus全局的更新策略,也没有在实体字段上使用@TableField注解修改字段的更新策略,但是alwaysUpdateSomeColumnById方法仍然可以对空值字段进行更新。本文主要是对Mybatis-Plus中updateById方法不能更新空值问题进行了分析说明,并提供了3种解决方案。字段级别解决方案
采用@TableField注解修改字段默认的更新策略为FieldStrategy.IGNORED。实体级别解决方案
调用Mybatis-Plus中的扩展方法alwaysUpdateSomeColumnById,忽略字段更新策略,直接对实体中所有字端进行更新。全局级别解决方案
修改Mybatis-Plus的全局更新策略为ignored关于“MybatisPlus中updateById方法不能更新空值如何解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MybatisPlus中updateById方法不能更新空值如何解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: 怎么使用C++验证回文字符串

本篇内容介绍了“怎么使用C免费云主机域名++验证回文字符串”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!验证回文字符串是比较常见的问题,所谓回文,就是一个正读和…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/28 12:17
下一篇 03/28 12:17

相关推荐