Mybatis-plus中Save()方法的注意点

首先我们先看一段代码

复制代码
Project project = new Project();
// 赋值主阶段数据 stagesid=0
project.setId(getId());
project.setStagesid(0);
project.setName("Java项目实战");
this.save(project);

// 重新赋值阶段1数据 stagesid=1
project.setId(getId()); // 覆盖了之前的ID
project.setStagesid(1); // 覆盖了之前的stagesid
project.setName("需求分析及设计");
this.save(project);

// 重新赋值阶段2数据 stagesid=2
project.setId(getId());
project.setStagesid(2);
project.setName("论文及成果展示");
this.save(project);

这段代码存在严重的问题:

Java 中,对象是引用类型 ,不是值类型。如果你的代码这么写:看似调用了 3 次save(),但因为是同一个对象引用 ,每次setXxx()都是在修改同一个对象的属性值

当然即使引用的是同一个对象每次都会执行save方法,那么对数据库的插入操作中就会依次插入同一个对象的不同值。不会存在只插入最新一条数据的情况。不过如果加上事务就会出现严重的问题。

事务中save方法不会立即执行 如果通过事务来进行管理的话,在执行完整段代码后会统一插入三条数据到数据库中,此时此刻插入的数据都将是最新的数据。造成严重的错误。

建议创建多个实例来进行数据插入操作。

相关推荐
认真的小羽❅44 分钟前
从入门到精通:Spring Boot 整合 MyBatis 全攻略
spring boot·后端·mybatis
神の愛4 小时前
Mybatis各个属性
数据库·oracle·mybatis
小松加哲4 小时前
MyBatis完整流程详解
java·开发语言·mybatis
凯尔萨厮14 小时前
创建SpringWeb项目(Spring2.0)
spring·mvc·mybatis
计算机学姐20 小时前
基于SpringBoot的高校竞赛管理系统
java·spring boot·后端·spring·信息可视化·tomcat·mybatis
小糊涂灬20 小时前
Mybatis+mysql 一对多查询问题
mysql·mybatis
一定要AK20 小时前
MyBatis 从入门到精通
mybatis
96771 天前
mybatis的作用+sql怎么写
java·开发语言·mybatis
那个失眠的夜2 天前
Mybatis延迟加载策略
xml·java·数据库·maven·mybatis
空太Jun2 天前
Spring Security 角色权限&资源权限配置 学习笔记
笔记·学习·spring·mybatis·security·springsecurity