首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >房间持久库--用WildCards查询

房间持久库--用WildCards查询
EN

Stack Overflow用户
提问于 2019-12-17 23:38:35
回答 2查看 241关注 0票数 0

在我的Room Dao类中,我有以下查询方法:

代码语言:javascript
复制
@Query("SELECT * FROM word_table WHERE firstName LIKE :word")
fun findByName(word:String): DataSource.Factory<Int, Word>

我还希望检索带有通配符的名称,其中单词的开头和结尾可以是任何内容。

在一些SQL查询中,我看到%是在开头和结尾添加的(在我的例子中,它是"%" + :word + "%"吗?),但我不知道如何在Room中这样做。

EN

回答 2

Stack Overflow用户

发布于 2021-11-09 12:55:56

如何在房间持久库(安卓)中使用SQL卡

这就是我如何做到这一点的。

第一步

在你的DAO课上

@Query("SELECT * FROM word_table WHERE firstName LIKE :word") fun findByName(word:String):List<YouDataModel>

注意:我以列表的形式返回结果,你可以以任何你想要的方式返回它

第二步

在View Model类中

var searchResult = MutableLiveData<List<YouDataModel>>()

代码语言:javascript
复制
fun findByName(word: String?): LiveData<List<YouDataModel>> { 
     viewModelScope.launch(Dispatchers.IO) {
         val result = adsRepo.findByName(word)
         searchResult .postValue(result)
     }
  return searchResult 
}

STEP THERE

在你的活动或片段中

val viewModel = ViewModelProvider(this).get(YourModelClassName::class.java)

代码语言:javascript
复制
viewModel.searchResult("%${search.text}%").observe(viewLifecycleOwner, Observer{
                Log.d("TAG", "${it.size}")
})

注意: SQL通配符是作为此视图模型函数searchResult("%${search.text}%")中的参数传入的。

票数 1
EN

Stack Overflow用户

发布于 2019-12-18 00:01:36

这是一个全文搜索(FTS)功能,在声明表时必须启用该功能。它是SQLIte的一项功能。

这是一个存储库,您可以在其中找到一些信息:https://github.com/android/architecture-components-samples/commit/c0d72f210241ff310bba13db9b8748081d6feab9

这里有一篇文章可以指导你完成这个过程:https://medium.com/@sienatime/enabling-sqlite-fts-in-room-2-1-75e17d0f0ff8

祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59377571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档