给定一个单词列表和一个水果类,让我们说:
List<String> wordList = new ArrayList<String>(Arrays.asList("App", "banan", "mang", "kiwi"));
LIKE会像这样,但一次只能一个,与IN不一致:
Fruits.find.where().like('name', wordList.get(0)).findList();
IN会像这样:
List<Fruit> matchedFruitList = Fruit.find.where().in("name", wordList).findList();
现在,我需要将LIKE操作与IN操作结合起来。
有没有办法用Ebean ORM做到这一点???
似乎您需要使用OR
condition并对每个单词进行“赞”。
ExpressionList<Fruit> scope = Fruit.find.where();
for (int i = 0; i < wordList.size(); i++) {
scope = scope.or().like("name", "%" + wordList.get(i) + "%");
}
List<Fruit> matchedFruitList = scope.findList();
这是正常时,wordList
是不是非常大。如果是这样,我认为您应该使用RawSql和特定于数据库的语法来执行查询。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句