Skip to content

Instantly share code, notes, and snippets.

@mesut
Created February 13, 2020 11:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mesut/c583528c822614e9722dddacd8fe08c6 to your computer and use it in GitHub Desktop.
Save mesut/c583528c822614e9722dddacd8fe08c6 to your computer and use it in GitHub Desktop.
scalikejdbc custom array types
implicit def sqlArrayToIntListBinder: Binders[List[Int]] = {
def sqlArrayToIntList(a: java.sql.Array): List[Int] = a.getArray.asInstanceOf[Array[AnyRef]].map(_.asInstanceOf[Int]).toList
Binders[List[Int]]((r, i) => sqlArrayToIntList(r.getArray(i)))((r, s) => sqlArrayToIntList(r.getArray(s)))(list => (s, i) => {
val array = s.getConnection.createArrayOf("integer", list.map(_.asInstanceOf[AnyRef]).toArray)
s.setArray(i, array)
})
}
implicit def sqlArrayToStringListBinder: Binders[List[String]] = {
def sqlArrayToStringList(a: java.sql.Array): List[String] = a.getArray.asInstanceOf[Array[AnyRef]].map(_.asInstanceOf[String]).toList
Binders[List[String]]((r, i) => sqlArrayToStringList(r.getArray(i)))((r, s) => sqlArrayToStringList(r.getArray(s)))(list => (s, i) => {
val array = s.getConnection.createArrayOf("varchar", list.map(_.asInstanceOf[AnyRef]).toArray)
s.setArray(i, array)
})
}
@XGZzs0ocFyf1
Copy link

XGZzs0ocFyf1 commented Mar 3, 2022

Thx for this little snippet, it helps me to create my own custom converter = )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment