我需要查询
SELECT * FROM `sample` WHERE id IN ["123", "456"]
以下将其转换为QueryBuilder
QueryBuilder
.select(SelectResult.all())
.from(DataSource.database("sample"))
.where(Expression.property("id")
.in([
Expression.string("123"),
Expression.string("456")
])
)
这不起作用,返回空结果列表,知道吗?
答案 0 :(得分:1)
我从您的评论中看到您的代码有效(错误否定)。但是,我将分享一种在您需要对多个通配符(like
)表达式使用%
运算符的情况下可能有用的方法。样本使用科特林语言:
val list = listOf("123", "456")
val items = list.map { Meta.id.like(Expression.string("$it-%")) }.toMutableList()
val whereExpression = items
.fold(items.removeAt(0)) { chain, next -> chain.or(next) }
val query = QueryBuilder.select(
SelectResult.expression(Meta.id),
SelectResult.all()
).from(DataSource.database(this.db)).where(whereExpression)
val results = query.execute()
val resultList = results.allResults()