android – 为什么GreenDAO不完全支持LIKE运算符?

GreenDAO只支持LIKE运算符的一个位置.它就像 ?”

我想用各种这样的运算符来获取记录.例如,“LIKE%?”,“LIKE?%”和“LIKE%?%”.但GreenDAO不支持它.

我也使用了queryRaw()和queryRawCreate(),遗憾的是它也没有用.
例如:

libDocSeriesDao.queryRawCreate(
” Where T.Title Like ‘%?%’ Or T.ViewTitle Like ‘%?%'”,aKeyword,
aKeyword).listLazy();

任何帮助将不胜感激.

解决方法

使用’?’时,’%’字符不能是查询字符串的一部分字符.绑定参数时,可以使用%的任意组合.

以下是如何使用LIKE查询的示例(取自greenDA的https://github.com/greenrobot/greenDAO/commit/788313904fa58a0c8628f6b2e016a4a385f344c6单位测试):

Query<TestEntity> query = dao.queryBuilder().where(Properties.SimpleString.like("%robot")).build();
TestEntity entity2 = query.uniqueOrThrow();
assertEquals(entity.getId(),entity2.getId());

query.setParameter(0,"green%");
entity2 = query.uniqueOrThrow();
assertEquals(entity.getId(),"%enrob%");
entity2 = query.uniqueOrThrow();
assertEquals(entity.getId(),entity2.getId());

相同的原则对原始查询有效.对于您的示例,您应该这样做:

libDocSeriesDao.queryRawCreate(" Where T.Title Like ? Or T.ViewTitle Like ?",aKeyword).listLazy();

此外,aKeyword必须具有%字符.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...