6

GreenDAOは、LIKE演算子の1つの位置をサポートしました。そうだった" LIKE ?"

この演算子のさまざまなレコードをフェッチしたいと思います。" LIKE %?"、、、など。" LIKE ?%"_ " LIKE %?%"ただし、GreenDAOではサポートされていません。

また、私は使用queryRaw()しましqueryRawCreate()たが、残念ながらそれも機能しませんでした。例えば:

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

どんな助けでも大歓迎です。

4

2 に答える 2

8

'?'を使用する場合、'%'文字をクエリ文字列の一部にすることはできません。キャラクター。パラメータをバインドするときは、%の任意の組み合わせを使用できます。

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();

また、キーワードには%文字が必要です。

于 2012-10-21T08:53:09.717 に答える
5

より簡単です:

dao.queryBuilder().where(Properties.SimpleName.like(name+"%")).list()
于 2014-10-16T11:06:08.240 に答える