mybatis-plus update更新操作的三种方式(小结)

作者:波神小波 时间:2023-10-08 14:05:08 

目录
  • 1.@ 根据id更新

  • 2.@ 条件构造器作为参数进行更新

  • 3.@ lambda构造器

  • mybatisplus update语句为null时没有拼接上去

1.@ 根据id更新


User user = new User();
user.setUserId(1);
user.setAge(29);
userMapper.updateById(user);

2.@ 条件构造器作为参数进行更新


//把名字为rhb的用户年龄更新为18,其他属性不变
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name","rhb");
User user = new User();
user.setAge(18);
userMapper.update(user, updateWrapper);

@ 假设只更新一个字段在使用updateWrapper 的构造器中也需要构造一个实体对象,这样比较麻烦。可以使用updateWrapper的set方法


//只更新一个属性,把名字为rhb的用户年龄更新为18,其他属性不变
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name","rhb").set("age", 18);
userMapper.update(null, updateWrapper);

3.@ lambda构造器


LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(User::getName, "rhb").set(User::getAge, 18);
Integer rows = userMapper.update(null, lambdaUpdateWrapper);

mybatisplus update语句为null时没有拼接上去

我有一个设置页面,数据库就相当于是key和value的样子,当value为空的时候用updatebyId就变成了


update param where key=?

就没有set就会报语法错误

这个出现的场景是如果数据库本来改自己有值更新 null时不会有问题,当数据库也是null时更新就不会拼接set
数据库有值时update null

mybatis-plus update更新操作的三种方式(小结)

数据库也为空时的更新

mybatis-plus update更新操作的三种方式(小结)

然后查解决方案:mybatisplus为null的时候不会拼接,可配置一个策略updateStrategy = FieldStrategy.IGNORED无论是啥都会拼接 但是还是会有问题,指定下类型就可以了 最后经测试有两种方案可行


@TableField(value = "PARAMVAL",updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.VARCHAR)
//@TableField(value = "PARAMVAL",jdbcType = JdbcType.VARCHAR, fill = FieldFill.UPDATE)
   private String paramVal;

以上两种方案均可

来源:https://blog.csdn.net/weixin_44162337/article/details/107828366

标签:mybatis-plus,update
0
投稿

猜你喜欢

  • springboot集成swagger3与knife4j的详细代码

    2023-11-27 18:22:58
  • 线程局部变量的实现 ThreadLocal使用及场景介绍

    2023-11-10 03:19:26
  • C#引用类型和值类型的介绍与实例

    2022-08-11 16:24:34
  • SpringBoot项目中的多数据源支持的方法

    2022-01-12 03:42:19
  • 浅谈Java中各种修饰符与访问修饰符的说明

    2022-10-07 00:49:52
  • Android模拟实现网易新闻客户端

    2022-09-03 18:19:11
  • maven继承父工程统一版本号的实现

    2023-01-27 09:19:49
  • 基于静态Singleton模式的使用介绍

    2022-09-13 20:11:08
  • Java线程池高频面试题总结

    2023-10-22 02:12:34
  • 详解java中jvm虚拟机栈的作用

    2022-06-06 14:08:44
  • springboot-jta-atomikos多数据源事务管理实现

    2022-08-29 19:45:47
  • JAVA读取文件夹大小的几种方法实例

    2021-05-24 21:01:53
  • C#中FileStream的对比及使用方法

    2023-10-17 21:09:41
  • java AOP原理以及实例用法总结

    2022-11-05 03:30:41
  • Maven的几个常用plugin

    2021-12-05 13:36:28
  • Java实现XML文件学生通讯录

    2023-07-23 19:21:49
  • JetBrains IntelliJ IDEA 配置优化技巧

    2022-06-19 08:31:38
  • C# 基础入门--关键字

    2023-01-22 15:44:23
  • Spark内存调优指南

    2022-07-28 09:22:25
  • Java 中 String,StringBuffer 和 StringBuilder 的区别及用法

    2023-08-22 16:40:57
  • asp之家 软件编程 m.aspxhome.com