mybatisplus 没有insert返回主键
时间: 2023-09-06 13:03:35 浏览: 185
MyBatis Plus是一个便捷的持久层框架,它是基于MyBatis的增强版本。虽然MyBatis Plus提供了很多便利的方法和功能来简化开发过程,但是它并没有直接提供insert操作返回主键的功能。
在MyBatis Plus中,如果我们需要获取插入数据后的主键值,我们可以通过其他方式来实现。下面是一种常用的解决方法:
1. 在实体类中使用@TableId注解或者在对应的数据库表中设置主键自增。
2. 在进行插入操作后,通过实体类的getId()方法获取插入数据的主键。
例如,假设有一个名为User的实体类,其中定义了主键字段id以及其他相关属性。在进行插入操作后,可以使用以下代码来获取插入数据的主键:
```java
User user = new User();
user.setName("John");
// 其他属性设置...
userMapper.insert(user);
Long id = user.getId();
```
需要注意的是,如果你的数据库表没有设置主键自增或者实体类中没有使用@TableId注解指定主键字段,那么以上方法是无法获取到插入数据的主键值的。
总之,虽然MyBatis Plus没有直接提供insert返回主键的功能,但是我们可以通过其他方式来获取插入数据的主键值,例如设置主键自增或者使用@TableId注解。
相关问题
mybatisplus insert返回主键
MybatisPlus的insert方法可以返回主键值。在执行insert操作后,可以通过获取返回的对象来获取主键值。例如:
```java
User user = new User();
user.setName("张三");
user.setAge(20);
user.setEmail("[email protected]");
int result = userMapper.insert(user);
if(result > ){
Long id = user.getId();
System.out.println("插入成功,主键值为:" + id);
}
```
在上面的代码中,我们创建了一个User对象,并设置了name、age和email属性。然后调用userMapper的insert方法插入数据,并将返回值赋给result变量。如果插入成功,我们可以通过user对象获取主键值,并输出到控制台。
mybatisplus insert返回主键id
### MyBatisPlus 插入操作后返回主键ID
在使用 MyBatis-Plus 进行插入操作时,可以通过配置实体类属性来实现自动获取并返回新插入记录的主键 ID。对于版本 3.5.1 的 MyBatis-Plus,在 Spring Boot 工程中设置 `@TableId` 注解可以指定主键策略以及映射到 Java 实体对象中的字段名称。
当采用 `ASSIGN_ID` 类型作为主键生成方式时(基于雪花算法),只需确保实体类里的相应成员变量被正确标注即可让框架处理好一切细节[^1]:
```java
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
public class Member {
@TableId(type = IdType.ASSIGN_ID)
private Long memberId; // 对应数据库表内的 member_id 列
// getter 和 setter 方法...
}
```
完成上述定义之后,在执行保存逻辑的时候,MyBatis-Plus 将会负责调用底层数据源接口并将产生的唯一标识符赋给该实例对应的 `memberId` 属性。因此,只要正常调用了 save 或者 insert API 并传入此实体参数,则无需额外编写 SQL 查询语句去检索刚刚创建的数据项所拥有的主键值[^2]。
下面给出一段简单的代码片段用于展示如何通过 MyBatis-Plus 完成这一过程:
```java
// 假设已经存在一个名为 "MemberService" 的服务层组件,
// 其内部封装了对 Member 表的操作方法。
@Autowired
private MemberService memberService;
// 创建一个新的会员信息条目
Member newMember = new Member();
newMember.setName("John Doe");
newMember.setEmail("[email protected]");
// 调用 service 中的方法来进行持久化存储
int num = memberService.save(newMember);
System.out.println("受影响行数:" + num);
System.out.println("新增用户的主键ID:" + newMember.getMemberId());
```
这段程序展示了怎样利用 MyBatis-Plus 提供的功能轻松获得刚插入记录的主键 ID。注意这里提到的关键点在于 `save()` 函数不仅完成了向数据库写入的工作,同时也更新了传递进去的对象状态——即填充好了由系统分配的新 ID 号码。
阅读全文
相关推荐















