Scala 如何使用ScalikeJDBC';s使用where子句返回()
我正在尝试将Postgres的返回与ScalikeJDBC一起使用(请参阅) 假设这对Scala 如何使用ScalikeJDBC';s使用where子句返回(),scala,scalikejdbc,Scala,Scalikejdbc,我正在尝试将Postgres的返回与ScalikeJDBC一起使用(请参阅) 假设这对where子句起作用。返回(…)是更新sqlbuilder的成员,而其中返回条件sqlbuilder 更新(Post) .set(sqls“${p.views}=${p.views}+${newViews}”) .式中,等式(p.id,id) .returning(p.id,p.lastUpdated,p.views)//不起作用,因为它不是ConditionSQLBuilder的成员 正如您所说,返回的不是条
where
子句起作用。返回(…)
是更新sqlbuilder
的成员,而其中
返回条件sqlbuilder
更新(Post)
.set(sqls“${p.views}=${p.views}+${newViews}”)
.式中,等式(p.id,id)
.returning(p.id,p.lastUpdated,p.views)//不起作用,因为它不是ConditionSQLBuilder的成员
正如您所说,返回的
不是条件SQLBuilder的成员。但是,您可以在where
子句之后使用append
方法,因为它是在ConditionSQLBuilder
上定义的:
update(Post)
.set(sqls"${p.views} = ${p.views} + ${newViews}")
.where.eq(p.id, id)
.append(sqls"returning ${p.id}, ${p.lastUpdated}, ${p.views}"
并且,如果要使用生成器将返回列映射到对象中,如下所示:
val postOpt = withSQL(builder).map(Post(p)).single().apply()
然后必须在SQLSyntax
中使用${p.result.columnName}
而不是${p.columnName}
,将其作为参数传递给append
方法。要映射所有列,只需使用${p.result.*}