如果不用Room提供的注解方式去查询sql,根据需求要写冗长复杂的查询语句(比如查询的条件数量不是固定的,语句不定长),注解的方式去写实现不了需求,那么就要用Room动态拼写原生sql语句去查询:
使用SimpleSQLiteQuery,将原生的sql字符串传进去就行:
/**
* home_条件検索
* @return 検索結果
*/
public Single<List<RidingLogRoomEntity>> searchConditional(List<String> tagList, List<String> notTagList, Date startDate, Date endDate, int rateCount) {
StringBuilder stringBuilder = new StringBuilder(" SELECT * FROM riding_log WHERE 1=1 ");
if (!notTagList.isEmpty()) {
stringBuilder.append(" and ");
String titleTemp = "";
String commentTemp = "";
for (int i = 0; i < notTagList.size(); i++) {
String titleOrComment = notTagList.get(i);
commentTemp += " title Like '%" + titleOrComment + (i +