文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mybatis-Plus系列---【解决null值字段不更新的问题】

2023-09-18 07:44

关注

1.问题

我的MP版本是3.3.2,用Mybatis-Plus的updateById()来更新数据时,无法将字段设置为null值(更新后数据还是原来的值)。

2.分析

默认情况下,Mybatis-Plus在更新时会判断字段是否为null,如果是null,则不设值(不将这个字段拼接为SQL的SET语句)。

3.推荐的解决方案

updateById默认是不修改值为null的字段

update默认是修改值为null的字段,优点:可以用Wrappers构造指定按什么修改的修改条件,但缺点是按id修改时也得手动指定。

saveOrUpdate中的Update默认是修改值为null的字段的,优势:参数直接就是实体类本身,默认的修改条件就是根据id修改,不用再指定修改条件为id。如果是存在就更新,不存在就新增的场景建议用这个,因为这个的更新自带更新null值的字段。

建议用下面这种方案,不建议用全局设置的,或者在某个字段上加"@TableField(strategy = FieldStrategy.IGNORED)"注解的方案。

@Autowiredprivate UserService; @ApiOperation("编辑")@PostMapping("/update")public void edit(Long id) {
  //构造需要修改的实体类 User user = new User(); user.setId(id); user.setName(null); userService.lambdaUpdate()
        //指定修改条件 .eq(User::getId, user.getId()) .update(user);}

//如果实体类字段少,也可以这样做
public boolean updateArticleById(Integer id) {
    Article article = Optional.ofNullable(articleMapper.selectById(id)).orElseThrow(RuntimeException:: new );
    boolean i =  articleService. lambdaUpdate()       . set(Article::getOfflineTime, null );        .set(Article::getContent, "try mybatis plus update null" );        .set(Article::getPublishTime,LocalDateTime.now().plusHours( 8 ));        .eq(Article::getId,article.getId())        .update();      return i ; }

常见问题:

在使用Oracle数据库的时候,Mysql我没试,我遇到了一个问题:

Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: Invalid column type: 1111 

解决方案:

在yml文件中配置

mybatis-plus:  configuration:    jdbc-type-for-null: 'null'

来源地址:https://blog.csdn.net/weixin_44988127/article/details/130074400

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯