首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Android Room获取特定栏目

如何使用Android Room获取特定栏目
EN

Stack Overflow用户
提问于 2018-08-29 21:01:47
回答 3查看 10.7K关注 0票数 7

我正在尝试从我的数据库中获取id列,将其广告到ArrayList,并为每个id添加"\t0",

我的数据库是使用Room创建的,我有很多列,其中之一是

代码语言:javascript
复制
@PrimaryKey(autoGenerate = true)
private int id;

我正在使用ItemDAO进行操作,并且我有这样的功能

代码语言:javascript
复制
@Query("SELECT * FROM item")
List<Item> getItems();

它将所有内容写到ArrayList<Items>中,我想通过循环运行它,获取id并添加到ArrayList<String>中,但这似乎并不有效。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-29 21:24:54

你的刀:

代码语言:javascript
复制
@Query("SELECT Id FROM item")
List<Integer> getAllIds();

您的模型:

代码语言:javascript
复制
@ColumnInfo(name = "Id")
@PrimaryKey(autoGenerate = true)
private int id;

在您的查询中,SELECT * FROM item *表示选择全部,将您的列名放在那里,您将从该列中获得对象列表

示例:选择id列SELECT id FROM item中的所有项

票数 12
EN

Stack Overflow用户

发布于 2019-09-17 16:39:05

我试着修改和测试@Valgaal的解决方案,结果证明Room还可以返回其他类型的值,而不仅仅是id (或整数)。

例如,您可以像这样编写item类:

代码语言:javascript
复制
@Entity(tableName = Item.TABLE_NAME)
public class Item {
    public static final String TABLE_NAME = "ItemsTable";
    public static final String COL_DESC = "Description";

    @PrimaryKey(autoGenerate = true)
    private int id;
    @ColumnInfo(name = COL_DESC)
    private String description;

    // getter & setter...
}

然后,您可以像这样编写Dao:

代码语言:javascript
复制
@Dao
public interface ItemDao {
    @Query("SELECT * FROM " + Item.TABLE_NAME)
    List<Item> getItems();

    @Query("SELECT " + Item.COL_DESC + " FROM " + Item.TABLE_NAME)
    List<String> getItemDescriptions();
}

它的功能应该是这样的。我猜Room可以保存的所有其他数据类型(包括自定义类型?)可以通过上面的相同逻辑查询(并返回特定列数据的列表)。希望这能对将来的人有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2020-10-28 01:17:03

要返回多个列,请创建可设置为DAO function的返回类型的pojo class

注意select查询应该包含Pojo类变量名(可以通过AS关键字完成)

详细答案请点击此处https://stackoverflow.com/a/50802209/1029110

我找到这个问题是因为我的issue...but没有找到答案。因此,这可能会对其他人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52078127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档