本文介绍了按DSC或DESC变量排序的会议室DAO的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在我的 @Dao
接口中创建一个 @Query
函数,该函数具有一个布尔参数 isAsc
来确定顺序:
I'm trying to make a @Query
function in my @Dao
interface which has a boolean parameter, isAsc
to determine the order:
@Query("SELECT * FROM Persons ORDER BY first_name (:isAsc ? ASC : DESC)")
List<Person> getPersonsAlphabetically(boolean isAsc);
显然,这是不允许的.在这附近有工作吗?
Apparently this isn't allowed. Is there a work around here?
使用两个查询(以下)似乎很奇怪,因为唯一的区别是 ASC
和 DESC
:
It seemed odd to use two queries (below) since the only difference is ASC
and 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();
推荐答案
对 SQLite 使用 CASE Expression
在 Room DAO 中实现此目的,
Use CASE Expression
for SQLite to achieve this in 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);
这篇关于按DSC或DESC变量排序的会议室DAO的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!