当前位置: 首页 > 知识库问答 >
问题:

Android Room-使用自动生成获取新插入行的id

鄢英哲
2023-03-14
@Entity
class User {
    @PrimaryKey(autoGenerate = true)
    public int id;
    //...
}

数据访问对象

@Dao
public interface UserDao{
    @Insert(onConflict = IGNORE)
    void insertUser(User user);
    //...
}

有没有可能在上述方法本身中完成插入后返回用户的id,而不需要编写单独的select查询?

共有1个答案

柴英光
2023-03-14

基于这里的文档(代码段下面)

@insert注释注释的方法可以返回:

    单次插入操作的
  • long[]long[]列表 用于多个插入操作
  • void如果不关心插入的id
 类似资料:
  • 正如这里讨论的,Android Room-使用auto generate获取新插入行的id,可以从新插入的对象获取id。 但是如何在MVVM模式中从DAO到我的活动类都获得这个ID呢? 上面的一些答案建议使用rxjava和类似的东西:

  • 问题内容: 我将SQLite与Android一起使用,我想知道获取插入的行的生成ID的最佳方法。 我认为有一个解决方案可以在包含之后进行搜索,但它并不是最好的方法。 问题答案: 该方法返回刚插入的行或插入期间发生错误的行。 db在哪里。

  • 问题内容: 如何使用MyBatis获取插入的生成密钥?我阅读了许多有关此问题的页面,但仍然被屏蔽,请问有人可以帮助我吗?这是我的代码: 桌子: 道: mapper.java: mapper.xml 怎么了?如何获得此插入的生成的密钥?谢谢! 问题答案: 如果要获取生成的主键,则应通过或传递参数。 调用映射方法时,将值映射。

  • 问题内容: 我想从行插入中检索自动生成的ID,但得到一个 这是代码: 这是PostgreSQL表: PostgreSQL支持自动生成的密钥,但是我得到了这个异常: 编辑:我试图这样做以获得自动生成的密钥: 但我得到了: ,虽然我认为 应该在插入行时调用 编辑: 插入行时正确创建了自动增量值 任何想法 ? 问题答案: 请注意,在较新版本的Postgres中,您需要使用 代替

  • 问题内容: 我有一个表字段类型varchar(36),我想由mysql动态生成它,所以我使用了以下代码: 插入记录后如何立即检索生成的uuid? 问题答案: 更好 你不能。唯一的解决方案是执行2个独立的查询: 其中$ uuid是第一步中获取的值。

  • 问题内容: 我有一个查询要在表中插入一行,该表有一个名为ID的字段,该字段在列上使用AUTO_INCREMENT填充。我需要为下一个功能获取此值,但是当我运行以下命令时,即使实际值不为0,它也总是返回0: 根据我的理解,这应该返回ID列,但每次仅返回0。有任何想法吗? 编辑: 当我跑步时: 我得到: 问题答案: [编辑:在引用last_insert_id()之前添加了“选择”] 插入后运行“ ”怎