【发布时间】:2021-11-17 10:53:33
【问题描述】:
我有一个像 UserTable 这样的表。
@Entity
public class UserTable{
@PrimaryKey(autoGenerate = true)
private int userId;
private String userName;
private String userEmailId;
// Below code is getter and setter of this class.
}
@Dao
public interface UserDao {
@Query("SELECT * FROM userTable")
public List<UserTable> loadAllUsers();
@Insert
public long insertUserTable(UserTable userTable);
@Insert
public long[] insertUserTables(UserTable... userTables);
@Update
public int updateUserTable(UserTable userTable);
@Delete
public int deleteUserTable(UserTable userTable);
@RawQuery
public abstract List<UserTable> loadAllUserListByGivenIds
(SupportSQLiteQuery query);
public default List<UserTable> loadAllUserListByIds(long[] userIds) {
List<UserTable> list;
ArrayList<Object> argsList = new ArrayList<>();
String selectQuery = "SELECT * FROM UserTable WHERE userId IN (?);";
argsList.add(userIds);
SimpleSQLiteQuery simpleSQLiteQuery = new SimpleSQLiteQuery(selectQuery, argsList.toArray());
list = loadAllUserListByGivenIds(simpleSQLiteQuery);
return list;
}
}
// 现在在我的 MainActivity.class 文件中,我使用了以下代码:
List<UserTable> userList= databaseClient
.getAppDatabase()
.userDao()
.loadAllUserListByIds(new long[]{1L,2L});
我的查询在普通数据库中运行,但是当我传递用户 ID 数组时,在 dao 类的 @RawQuery() 方法中,在 where 条件“WHERE userId IN (?) ”。
如何,我将在房间数据库的@RawQuery() 中使用“IN”子句。
【问题讨论】:
标签: java android database sqlite android-room