我正在使用kotlin编写dropwizard应用程序,其中一种资源方法将接收多个参数(电子邮件,电话,is_deleted等)。基于传入的查询参数,我必须过滤表。我正在使用Exposed的DAO API来构造查询。
val result = User.find { //SqlExpressionBuilder
Users.isDeleted eq false
Users.email eq "so@soso.com"
}.sortedByDescending { it.createdAt }
如何使用for in循环基于查询参数图向查询添加多个where条件?
答案 0 :(得分:0)
我不得不使用DSL解决问题。似乎DAO没有这样的规定来创建这样的临时查询。
val query = Users.selectAll()
for((k, v) in params) {
val value = URLDecoder.decode(v, "UTF-8")
when(value) {
"email" -> query.andWhere { Users.email eq value }
"phone" -> query.andWhere { Users.phone eq value }
}
}
return query.andWhere { Users.isDeleted.eq(false) }
如@Tapac所述,一个人也可以使用User.wrapRows(query).sortedByDescending()
来构成这种查询,但是又必须使用DSL。
希望能帮助某人。