我正在尝试从我的数据库中获取id列,将其广告到ArrayList,并为每个id添加"\t0",
我的数据库是使用Room创建的,我有很多列,其中之一是
@PrimaryKey(autoGenerate = true)
private int id;我正在使用ItemDAO进行操作,并且我有这样的功能
@Query("SELECT * FROM item")
List<Item> getItems();它将所有内容写到ArrayList<Items>中,我想通过循环运行它,获取id并添加到ArrayList<String>中,但这似乎并不有效。
发布于 2018-08-29 21:24:54
你的刀:
@Query("SELECT Id FROM item")
List<Integer> getAllIds();您的模型:
@ColumnInfo(name = "Id")
@PrimaryKey(autoGenerate = true)
private int id;在您的查询中,SELECT * FROM item *表示选择全部,将您的列名放在那里,您将从该列中获得对象列表
示例:选择id列SELECT id FROM item中的所有项
发布于 2019-09-17 16:39:05
我试着修改和测试@Valgaal的解决方案,结果证明Room还可以返回其他类型的值,而不仅仅是id (或整数)。
例如,您可以像这样编写item类:
@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:
@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可以保存的所有其他数据类型(包括自定义类型?)可以通过上面的相同逻辑查询(并返回特定列数据的列表)。希望这能对将来的人有所帮助!
发布于 2020-10-28 01:17:03
要返回多个列,请创建可设置为DAO function的返回类型的pojo class
注意select查询应该包含Pojo类变量名(可以通过AS关键字完成)
详细答案请点击此处https://stackoverflow.com/a/50802209/1029110
我找到这个问题是因为我的issue...but没有找到答案。因此,这可能会对其他人有所帮助。
https://stackoverflow.com/questions/52078127
复制相似问题