如何使用 Android Room 获取特定列
How to get specific column using Android Room
我正在尝试从我的数据库中获取 id
列,将其添加到 ArrayList 并向每个 ID 添加“\t0”,
我的数据库是使用 Room 创建的,我有很多列,其中之一是
@PrimaryKey(autoGenerate = true)
private int id;
我正在使用 ItemDAO
进行操作并且我有
功能
@Query("SELECT * FROM item")
List<Item> getItems();
写入ArrayList<Items>
所有内容
我正在考虑 运行 它通过循环获取 id
并添加到 ArrayList<String>
但这似乎并不有效。
你的 DAO:
@Query("SELECT Id FROM item")
List<Integer> getAllIds();
您的模特:
@ColumnInfo(name = "Id")
@PrimaryKey(autoGenerate = true)
private int id;
在你的查询中 SELECT * FROM item
* 表示 select 全部,把你的列名放在那里,你会得到该列的对象列表
示例:Select id 列中的所有项目 SELECT id FROM item
我尝试修改和测试@Valgaal 的解决方案。事实证明,Room 还可以 return 其他类型的值,而不仅仅是 id(或整数)。
例如,您可以这样写一个项目class:
@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
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 可以保存的所有其他数据类型(包括自定义类型?)都可以通过上面相同的逻辑查询(和 returned 特定列数据的列表)。希望这对以后的人有所帮助!
对于 return 多列,创建一个 pojo class
可以设置为 return 类型的 DAO function
注意 select 查询应该包含 Pojo class 变量名(可以通过 AS 关键字)
详细答案在这里
我针对我的问题找到了这个问题...但没有找到答案。所以这可能对其他人有帮助。
我正在尝试从我的数据库中获取 id
列,将其添加到 ArrayList 并向每个 ID 添加“\t0”,
我的数据库是使用 Room 创建的,我有很多列,其中之一是
@PrimaryKey(autoGenerate = true)
private int id;
我正在使用 ItemDAO
进行操作并且我有
@Query("SELECT * FROM item")
List<Item> getItems();
写入ArrayList<Items>
所有内容
我正在考虑 运行 它通过循环获取 id
并添加到 ArrayList<String>
但这似乎并不有效。
你的 DAO:
@Query("SELECT Id FROM item")
List<Integer> getAllIds();
您的模特:
@ColumnInfo(name = "Id")
@PrimaryKey(autoGenerate = true)
private int id;
在你的查询中 SELECT * FROM item
* 表示 select 全部,把你的列名放在那里,你会得到该列的对象列表
示例:Select id 列中的所有项目 SELECT id FROM item
我尝试修改和测试@Valgaal 的解决方案。事实证明,Room 还可以 return 其他类型的值,而不仅仅是 id(或整数)。
例如,您可以这样写一个项目class:
@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
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 可以保存的所有其他数据类型(包括自定义类型?)都可以通过上面相同的逻辑查询(和 returned 特定列数据的列表)。希望这对以后的人有所帮助!
对于 return 多列,创建一个 pojo class
可以设置为 return 类型的 DAO function
注意 select 查询应该包含 Pojo class 变量名(可以通过 AS 关键字)
详细答案在这里
我针对我的问题找到了这个问题...但没有找到答案。所以这可能对其他人有帮助。