我正在使用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)

我需要能够从列表中获得满足至少一个条件的所有自行车作为参数 . 每个条件都包含 typereadyToUse .

所以我有基本的查询 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语句与插值参数并执行它?