Android 如何在查询中实现字符串数组?
我想通过以下查询从我的房间数据库获取数据:Android 如何在查询中实现字符串数组?,android,sql,android-room,Android,Sql,Android Room,我想通过以下查询从我的房间数据库获取数据: @Query("SELECT address.address_id, first_name, last_name, street, postal_code, city," + "(SELECT employee.employee_id FROM employee WHERE employee.address_id = address.address_id) AS employee_id, " + "(SELECT project.project_i
@Query("SELECT address.address_id, first_name, last_name, street, postal_code, city," +
"(SELECT employee.employee_id FROM employee WHERE employee.address_id = address.address_id) AS employee_id, " +
"(SELECT project.project_id FROM project WHERE project.address_id = address.address_id) AS project_id " +
"FROM address WHERE last_name IN (:pattern) OR first_name IN (:pattern) ORDER BY last_name ASC, first_name ASC")
LiveData<List<AddressBookAddress>> loadAddressBookWithFilter(String... pattern);
如您所见,我的参数接受带有一个或多个搜索字符串的数组
让我们以max和muster为例
现在我想得到所有包含名字max或muster或姓氏max或muster的记录。但目前,我没有收到任何数据。文档显示这是一件非常简单的事情。看看在这里,您可以看到以下示例: 作为SQLite绑定参数的扩展,Room支持将参数列表绑定到查询。在运行时,Room将根据方法参数中的项数构建正确的查询,使其具有匹配数量的绑定参数
@Query("SELECT * FROM user WHERE uid IN(:userIds)")
public abstract List findByIds(int[] userIds);
对于上面的示例,如果userid是一个由3个元素组成的数组,Room将以如下方式运行查询:SELECT*FROM user WHERE uid IN?并将userIds数组中的每个项绑定到语句中
所以,将签名从字符串更改为。。。字符串[]以清楚地表示数组存在。文档将其显示为非常简单的事情。看看在这里,您可以看到以下示例: 作为SQLite绑定参数的扩展,Room支持将参数列表绑定到查询。在运行时,Room将根据方法参数中的项数构建正确的查询,使其具有匹配数量的绑定参数
@Query("SELECT * FROM user WHERE uid IN(:userIds)")
public abstract List findByIds(int[] userIds);
对于上面的示例,如果userid是一个由3个元素组成的数组,Room将以如下方式运行查询:SELECT*FROM user WHERE uid IN?并将userIds数组中的每个项绑定到语句中
所以,将签名从字符串更改为。。。要使用字符串[]来清楚地表示数组存在。上没有kotlin的文档,但您可以使用此代码来进行相同的操作
@Query("SELECT * FROM employee WHERE id IN(:idList)")
fun getAllSelectedEmployee(idList:Array<String?>): List<Model>
上没有kotlin的文档,但您可以将此代码用于相同的文档
@Query("SELECT * FROM employee WHERE id IN(:idList)")
fun getAllSelectedEmployee(idList:Array<String?>): List<Model>