是的,在使用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。