使用 '?' 时,'%' 字符不能是查询字符串的一部分 特点。绑定参数时可以使用 % 的任意组合。
这是一个如何使用 LIKE 查询的示例(取自https://github.com/greenrobot/greenDAO/commit/788313904fa58a0c8628f6b2e016a4a385f344c6的 greenDAO 的单元测试):
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(), entity2.getId());
query.setParameter(0, "%enrob%");
entity2 = query.uniqueOrThrow();
assertEquals(entity.getId(), entity2.getId());
同样的原则也适用于原始查询。对于您的示例,您应该这样做:
libDocSeriesDao.queryRawCreate(" Where T.Title Like ? Or T.ViewTitle Like ?", aKeyword, aKeyword).listLazy();
此外,aKeyword 必须具有 % 字符。