mybatisplus 使用basemapper的insert(DO)插入id自增数据时,新增数据的id会自动返回到DO的id属性中吗
需要注意的是,这个特性依赖于使用的数据库和是否正确配置了MyBatis-Plus。此外,某些特殊情况下(如数据库不支持自增主键或者使用了分布式ID生成策略),可能需要采取其他方式来获取插入后的ID。方法插入数据时,如果数据库表中的主键是自增的,MyBatis-Plus在执行插入操作后会自动将生成的主键值回填到传入的实体对象(DO)的ID属性中。方法后,实体对象的ID属性将被设置为数据库生成的自增I
是的,在使用MyBatis-Plus的BaseMapper中的insert方法插入数据时,如果数据库表中的主键是自增的,MyBatis-Plus在执行插入操作后会自动将生成的主键值回填到传入的实体对象(DO)的ID属性中。
这是通过MyBatis-Plus提供的@TableId注解结合主键策略来实现的。通常情况下,如果你使用了@TableId(type = IdType.AUTO)注解,并且数据库表设置了自增主键,那么在执行insert方法后,实体对象的ID属性将被设置为数据库生成的自增ID。
下面是一个简单的例子:
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.mapper.BaseMapper;
public class UserDO {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
// 省略getter和setter方法
}
// 定义Mapper接口
public interface UserMapper extends BaseMapper<UserDO> {
}
// 使用
UserDO user = new UserDO();
user.setName("张三");
// 插入前,id为null
int result = userMapper.insert(user);
// 插入后,id会被赋值为数据库生成的自增ID
System.out.println(user.getId());
在这个例子中,UserDO的id字段被标记为自增主键。在调用insert方法后,如果插入操作成功,user.getId()将返回新生成的主键值。
需要注意的是,这个特性依赖于使用的数据库和是否正确配置了MyBatis-Plus。如果数据库不支持自增主键或者配置有误,这个功能可能不会正常工作。此外,某些特殊情况下(如数据库不支持自增主键或者使用了分布式ID生成策略),可能需要采取其他方式来获取插入后的ID。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)