MybatisPlus更新时部分失败的问题解决
作者:韩_师兄
这篇文章主要为大家详细介绍了MybatisPlus更新时部分失败的问题分析和解决方法,文中的代码示例讲解的非常详细,需要的朋友可以参考下
1 问题模拟
1 添加依赖
在spring环境添加下面依赖包,如springboot环境,则添加另一个依赖包.
spring环境
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.4.0</version> </dependency>
springboot环境
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency>
2 添加实体对象
@Data @NoArgsConstructor @AllArgsConstructor @TableName("dev_student") // 表名 public class Student { // 主键 @TableId private String id; private String score; private String name; private Integer age; private Date creatTime; private String desc; }
3 模拟调用
@Test public void testUpdateById(){ // 参数从前端传递,此处模拟获取 Student student = new Student(); student.setId("1111"); student.setName("小明"); student.setAge(18); student.setCreatTime(new Date()); // 模拟前端更新 删除了备注信息 student.setDesc(""); // 模拟前端更新 将字段指为空传递 student.setScore(null); studentMapper.updateById(student); }
4 查询结果
SQL语句目标: 将id为1111的对应的表字段更新为我们设置的值.
执行结果: 发现id为1111的数据,其他信息都进行了修改,备注和分数字段没有被修改.不符合我们的目标要求.
2 问题分析
根据上述问题分析,怀疑是不是配置有问题,导致数据没有更新成功.
官网简介:MyBatis-Plus (baomidou.com)
查询了一下官网信息:
在mybatis-plus 配置文件后,有个global-config 全局配置,里面配置了更新、插入策略。
全局策略有:
- IGNORED:忽略
- NOT_NULL:非 NULL,默认策略
- NOT_EMPTY:非空
关于mybatis-plus插入或更新的字段有 空字符串 或者 null 时,默认是不进行更新数据库的.
此外,还能对单个字段进行插入或更新设置.
关联的字段策略有:
- IGNORED:忽略
- NOT_NULL:非 NULL,默认策略
- NOT_EMPTY:非空
- NEVER 从不更新,不管字段是否有值,都不进行更新
- DEFAULT 追随全局配置
问题解决
1 全局设置
mybatis-plus: global-config: db-config: update-strategy: IGNORED
2 字段设置
@Data @NoArgsConstructor @AllArgsConstructor @TableName("dev_student") public class Student { @TableId private String id; private String score; private String name; private Integer age; private Date creatTime; // 更新时 忽略 不做判空和null校验 @TableField(updateStrategy = FieldStrategy.IGNORED) private String desc; }
3 问题总结
关于mybatis-plus更新时部分字段失败的问题, 查看官方文档后,很容易知道问题在哪里,修改起来也很方便. 对于未知的新技术,需要多多去学习和关注官方文档,才能更好的使用它.
到此这篇关于MybatisPlus更新时部分失败的问题解决的文章就介绍到这了,更多相关MybatisPlus更新失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!