1688网站建设方案书模板,基于分布式控件的网站开发框架,微信网站推广,注册网站域名要钱吗文章目录 前言方式一 调整全局的验证策略方式二 调整字段验证注解方式三 使用 UpdateWrapper 前言
在 MyBatis-Plus 中#xff0c;使用updateById#xff0c;null字段并不会更新#xff0c;其实是和更新的策略有关#xff0c;当然#xff0c;也有插入策略#xff0c;本文… 文章目录 前言方式一 调整全局的验证策略方式二 调整字段验证注解方式三 使用 UpdateWrapper 前言
在 MyBatis-Plus 中使用updateByIdnull字段并不会更新其实是和更新的策略有关当然也有插入策略本文基于MyBatis-Plus3.5.2对插入和更新策略做讲解。
方式一 调整全局的验证策略
注入全局配置设置属性 insertStrategy、updateStrategy
缺点这样做会对所有的字段都忽略判断如果一些字段不想要修改但是传值的时候没有传递过来就会被更新为null
mybatis-plus:global-config:db-config:insert-strategy: ignored # 忽略判断, 所有字段都插入update-strategy: ignored # 忽略判断, 所有字段都更新insertStrategy、updateStrategy 属性的值有以下5种枚举类型
ignored “忽略判断”, 所有字段都更新或插入not_null “非 NULL 判断”, 只更新或插入非NULL值not_empty “非空判断”, 只更新或插入非NULL值且非空字符串default 如果字段的值不为null则进行插入或者更新操作如果字段的值为null不执行操作执行结果还是数据库原来的值或者默认值never 永远不进行插入或更新操作即使字段的值不为null
方式二 调整字段验证注解
在属性上注解
根据具体情况在需要更新或者插入的字段中调整验证注解如忽略判断任何情况都进行插入和更新操作
TableField(updateStrategy FieldStrategy.IGNORED, insertStrategy FieldStrategy.IGNORED)方式三 使用 UpdateWrapper
如果没有设置 insert-strategy、update-strategy 的值默认为 default
使用以下方法来进行更新操作无设置的值还是数据库原来的值如下
UpdateWrapperUser updateWrapper new UpdateWrapper();
updateWrapper.set(name, 一碗情深).set(url, https://blog.csdn.net/xiaohuihui1400).eq(id, 1);
userMapper.update(null, updateWrapper);或者使用lambda表达式只有将属性赋值数据库的值才会改变如下把email设置成null
mapper.update(null,Wrappers.UserlambdaUpdate().set(User::getName, 一碗情深).set(User::getUrl, https://blog.csdn.net/xiaohuihui1400).set(User::getEmail, null) // 把email设置成null.eq(User::getId, 1)
);