我正在尝试从数据库中获取id
列,将其添加到ArrayList并为每个ID添加“ \ t0”,
我的数据库是使用Room创建的,我有很多列,其中之一是
@PrimaryKey(autoGenerate = true)
private int id;
我正在使用ItemDAO
进行操作,并且具有功能
@Query("SELECT * FROM item")
List<Item> getItems();
将所有内容写入ArrayList<Items>
我当时正在考虑通过获取id
并将其添加到ArrayList<String>
的循环中来运行它,但这似乎并不高效。
答案 0 :(得分:1)
您的DAO:
@Query("SELECT Id FROM item")
List<Integer> getAllIds();
您的型号:
@ColumnInfo(name = "Id")
@PrimaryKey(autoGenerate = true)
private int id;
在您查询SELECT * FROM item
时*表示选择全部,在其中输入列名,您将获得该列中的对象列表
答案 1 :(得分:0)
我试图修改和测试@Valgaal的解决方案。事实证明,Room还可以返回其他类型的值,而不仅仅是ID(或整数)。
例如,您可以编写以下项目类:
@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可以保存的所有其他数据类型(包括自定义类型?)(以及返回的特定列数据的列表)。希望这对以后的人有所帮助!
答案 2 :(得分:0)
要返回多列,请创建一个pojo class
,可以将其设置为DAO function
的返回类型
请注意,select查询应包含Pojo类变量名(可以通过 AS关键字完成)
详细答案在这里 https://stackoverflow.com/a/50802209/1029110
我就这个问题着手解决这个问题...但是没有找到答案。因此这可能对其他人有帮助。