我有以下带有查询的 DAO:
@Dao
public interface BaseballCardDao {
@Query(
"SELECT * FROM baseball_cards " +
"WHERE brand LIKE :brand " +
" AND year = :year " +
" AND number LIKE :number " +
" AND player_name LIKE :playerName " +
" AND team LIKE :team"
)
LiveData<List<BaseballCard>> getBaseballCards(
String brand, int year, String number, String playerName, String team
);
}
在使用LIKE
操作符时,String
参数是“可选”的,因为我可以传递"%%"
来匹配所有行。但由于year
是一个int
类型,我不能这样做。解决方法是添加两个不同的@Query
方法,一个带有int year
参数,另一个没有。是否有更优雅的方法在Room's @Query
中创建可选参数?
year
是可选的,你的方法签名会是什么?你会保留这个签名并使用一些魔法值来表示“忽略年份”吗?如果是这样,你可以尝试像这样做:AND (year = :year OR -1 = :year)
,假设-1
是你的魔法值。 - CommonsWare