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

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

相关推荐
misL NITL1 天前
idea、mybatis报错Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
tomcat·intellij-idea·mybatis
是宇写的啊1 天前
MyBatis-Plus
java·开发语言·mybatis
工作log3 天前
Spring Boot 3.5 + MyBatis Plus + RabbitMQ:打造 AI 驱动的慢 SQL 监控与优化系统
spring boot·mybatis·java-rabbitmq
河阿里3 天前
MyBatis-Plus:MyBatis的进阶开发
数据库·mybatis
橙子圆1233 天前
Mybatis之动态sql
sql·tomcat·mybatis
冷小鱼3 天前
MyBatis 与 MyBatis-Plus:从入门到精通的完整指南
java·tomcat·mybatis
香香甜甜的辣椒炒肉4 天前
SpringMVC高级应用和MyBatis-Plus的概念和使用
mybatis
鸡蛋灌Bean4 天前
mybatis分页深入了解
java·数据库·mybatis
看腻了那片水4 天前
开源一个对业务代码零侵入的透明数据治理框架 —— 【sangsang】
java·mybatis
ffqws_4 天前
MyBatis 动态 SQL 详解:从原理到实战
java·sql·mybatis