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

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

相关推荐
步行cgn5 小时前
错误:Invalid bound statement (not found) 详解与解决方案
mybatis
sugar__salt12 小时前
MyBatis-Plus 从入门到实战:高效简化数据库开发的完整指南
数据库·spring boot·mybatis·数据库开发
bbq粉刷匠1 天前
手写 SQL 被一次 mvn generate 抹掉之后:我用一个 extension/ 子目录躲开 MyBatis 两个坑
数据库·sql·mybatis
ChaHae-In1 天前
MyBatis入门操作
java·mybatis
sugar__salt1 天前
MyBatis ③动态 SQL 完全指南 —— 从条件拼接到批量操作
java·sql·mybatis
元界metalite2 天前
MyBatis多数据源常见难题-事务开始了为何数据源还没选出来
后端·mybatis
霸道流氓气质3 天前
Mysql中慢 SQL 优化实战:减少不必要的 JOIN 关联
sql·mysql·mybatis
xbgRS3 天前
spring整合mybaits
java·spring·mybatis
vHelios4 天前
【电商项目】商品服务模块的问题解决与代码逻辑思考
java·sql·mybatis
敲个大西瓜4 天前
Mybatis核心面试题
mybatis