会议室DAO按ASC或DESC排序

时间:2019-03-22 10:02:48

标签: android android-room dao

我正在尝试在我的DataCell界面中创建一个@Query函数,该函数具有一个布尔参数@Dao来确定顺序:

isAsc

显然,这是不允许的。在这附近有工作吗?

编辑:

使用两个查询(如下)似乎很奇怪,因为唯一的区别是@Query("SELECT * FROM Persons ORDER BY first_name (:isAsc ? ASC : DESC)") List<Person> getPersonsAlphabetically(boolean isAsc); ASC

DESC

3 个答案:

答案 0 :(得分:1)

创建两个查询,一个使用ASC,一个使用DESC。

@Query("SELECT * FROM Persons ORDER BY last_name ASC")
List<Person> getPersonsSortByAscLastName();

@Query("SELECT * FROM Persons ORDER BY last_name DESC")
List<Person> getPersonsSortByDescLastName();

答案 1 :(得分:1)

为什么不尝试这样的事情?我还没有测试。

@Query("SELECT * FROM Persons ORDER BY first_name :order")
List<Person> getPersonsAlphabetically(String order);

在进行查询之前,应该建议您使用逻辑。

答案 2 :(得分:1)

使用CASE Expression用于 SQLite Room DAO 中实现此目标,

@Query("SELECT * FROM Persons ORDER BY CASE WHEN :isAsc = 1 THEN first_name END ASC, CASE WHEN :isAsc = 0 THEN first_name END DESC")
List<Person> getPersonsAlphabetically(boolean isAsc);