我正在使用Slick来访问数据库中的数据并编写纯SQL查询但我需要能够使用字符串插值来连接SQL查询部分以获取参数 .
这在Slick有可能吗?
我试着在一个小例子中展示我需要的东西:
我有例如表 bikes
定义为
CREATE TABLE bikes (
id serial PRIMARY KEY,
name varchar NOT NULL,
type int NOT NULL, -- 1 = road, 2 = track, 3 = mountain, 4 = city
readyToUse boolean NOT NULL)
我需要能够从列表中获得满足至少一个条件的所有自行车作为参数 . 每个条件都包含 type
和 readyToUse
.
所以我有基本的查询 SELECT id, name, type, readyToUse FROM bikes
,我需要通过参数生成 WHERE
语句扩展它,例如:
-
conds = Seq()
- > SELECT id, name, type, readyToUse FROM bikes -
conds = Seq(Cond(type = 1, readyToUse = true))
- > SELECT id, name, type, readyToUse FROM bikes WHERE type=${conds(0).type} AND readyToUse = ${conds(0).readyToUse} -
conds = Seq(Cond(type = 2, readyToUse = true), Cond(type = 3, readyToUse = false)
- > SELECT id, name, type, readyToUse FROM bikes WHERE (type = ${conds(0).type} AND readyToUse = ${conds(0).readyToUse}) OR (type=${conds(1).type} AND readyToUse = ${conds(1).readyToUse}) -
......
有没有办法如何连接基本查询和where语句与插值参数并执行它?