読者です 読者をやめる 読者になる 読者になる

the industrial

都内で働くITエンジニアの日記

ScalikeJDBCでDDD的な

program scala

大したことではないのだけど、便利そうだったのでメモ。

Long値である従業員IDを明示的に型として保持したいニーズがあるとして、こんな case class があったとする。

case class EmployeeId(value: Long)

SQLのWHERE句を組み立てる際、下記の様になる

val where = sqls.eq(Employees.e.employeeId, employeeId.value)

この .value がちょっと煩わしいなと思っていたのだけど、下記のような implicit conversion を定義しておくと

implicit val intParameterBinderFactory: ParameterBinderFactory[EmployeeId] = ParameterBinderFactory{
  id => (stmt, idx) => stmt.setLong(idx, id.value)
}

こんな風に書けた。

val where = sqls.eq(Employees.e.employeeId, employeeId)

あくまでも自分へのメモw