mybatis-plus中的save方法保存后会返回id吗
时间: 2023-10-06 18:13:06 浏览: 473
是的,在 Mybatis-Plus 中,我们可以使用 `save` 方法保存一个实体对象,并自动为实体对象生成一个全局唯一的主键。保存成功后,实体对象的主键值会自动填充到实体对象中。我们可以通过实体对象的主键属性访问这个自动生成的主键值。
例如,我们有一个 `User` 实体类,其中包含一个名为 `id` 的主键属性。我们使用 Mybatis-Plus 提供的 `save` 方法保存一个 `User` 对象,代码如下:
```
User user = new User();
user.setUsername("test");
user.setPassword("123456");
user.setEmail("test@example.com");
user.setAge(20);
user.setGender("male");
userService.save(user);
```
保存成功后,`user` 对象中的 `id` 属性就会自动填充为自动生成的主键值。我们可以通过如下方式获取这个主键值:
```
Long id = user.getId();
```
在 `save` 方法中,Mybatis-Plus 会自动为我们处理主键生成和填充。具体的主键生成策略可以在实体类的主键属性上使用 `@TableId` 注解指定。如果没有指定主键生成策略,默认使用雪花算法生成一个全局唯一的主键。
相关问题
mybatis-plus save和insert
mybatis-plus的insert和save都是用于向数据库中插入数据的方法。
其中,insert方法是直接插入一条数据,需要手动设置每个字段的值,例如:
```
User user = new User();
user.setName("张三");
user.setAge(18);
userMapper.insert(user);
```
而save方法则是先判断该数据是否已经存在于数据库中,如果存在则更新数据,如果不存在则插入数据。使用save方法时,需要先设置主键值,例如:
```
User user = new User();
user.setId(1L);
user.setName("张三");
user.setAge(18);
userMapper.save(user);
```
需要注意的是,如果使用save方法时没有设置主键值,则会抛出异常。另外,save方法的返回值是一个boolean类型,表示操作是否成功。
mybatis-plus工具类save or update
MyBatis-Plus提供了方便的工具类来执行save or update操作。你可以使用`saveOrUpdate`方法来实现。
下面是一个示例代码:
```java
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
public class YourService extends ServiceImpl<YourMapper, YourEntity> {
public boolean saveOrUpdate(YourEntity entity) {
if (entity.getId() != null) {
// 如果实体对象的id不为空,则执行update操作
return updateById(entity);
} else {
// 如果实体对象的id为空,则执行save操作
return save(entity);
}
}
public boolean saveOrUpdateByWrapper(YourEntity entity) {
if (entity.getId() != null) {
// 如果实体对象的id不为空,则执行update操作
return update(entity, new UpdateWrapper<YourEntity>().eq("id", entity.getId()));
} else {
// 如果实体对象的id为空,则执行save操作
return save(entity);
}
}
}
```
上述代码中,`YourEntity`是你的实体类,`YourMapper`是你的Mapper接口。`YourService`继承自`ServiceImpl`,它提供了一些方便的方法来操作数据库。
使用`saveOrUpdate`方法时,如果实体对象的id不为空,则执行update操作;否则执行save操作。
另外,你还可以使用带有`UpdateWrapper`参数的`saveOrUpdateByWrapper`方法,通过设置条件来执行update操作。
这样你就可以使用MyBatis-Plus的工具类来执行save or update操作了。