Slick-pg v0.2.5 发布, PostgreSQL 的 Slick 扩展

Tu_Minglei
 Tu_Minglei
发布于 2014年01月14日
收藏 3

Slick-pg v0.2.5 发布了,这一版的主要变化是:

- 增加了对 pg composite type 的基本支持*

- 同时,array 支持方面也允许嵌套的 composite type 了

这要感谢 @hsyed 的大力支持,他帮忙实现了 composite/array 字符串的 parser。

*所谓基本支持,就是只支持 type mapper,数据的 insert、update 没问题,但还不支持 composite type 相关的嵌套 field 访问等操作。

--------------------------------------------------------------------------------------------------

composite type 都是 开发/用户 自己定义的,所以它的 type mapper 以及相关的整合工作要 开发/用户 自己来做。像这样:

  trait MyCompositeSupport extends utils.PgCommonJdbcTypes with array.PgArrayJavaTypes { driver: PostgresDriver =>

    trait CompositeImplicts {
      import utils.TypeConverters.Util._

      utils.TypeConverters.register(mkCompositeConvFromString[Composite1])
      utils.TypeConverters.register(mkCompositeConvToString[Composite1])
      utils.TypeConverters.register(mkCompositeConvFromString[Composite2])
      utils.TypeConverters.register(mkCompositeConvToString[Composite2])

      implicit val composite1TypeMapper = new GenericJdbcType[Composite1]("composite1",
        mkCompositeConvFromString[Composite1], mkCompositeConvToString[Composite1])
      implicit val composite2TypeMapper = new GenericJdbcType[Composite2]("composite2",
        mkCompositeConvFromString[Composite2], mkCompositeConvToString[Composite2])
      implicit val composite1ArrayTypeMapper = new ArrayListJavaType[Composite1]("composite1",
        mkArrayConvFromString[Composite1], mkArrayConvToString[Composite1])
      implicit val composite2ArrayTypeMapper = new ArrayListJavaType[Composite2]("composite2",
        mkArrayConvFromString[Composite2], mkArrayConvToString[Composite2])
    }
  }

  object MyPostgresDriver1 extends MyPostgresDriver with MyCompositeSupport {
    override val Implicit = new ImplicitsPlus with CompositeImplicts {}
    override val simple = new SimpleQLPlus with CompositeImplicts {}
  }

然后我们就可以跟其他类型一样在表定义的地方使用它了:

  import MyPostgresDriver1.simple._

  ...

  class TestTable(tag: Tag) extends Table[TestBean](tag, "CompositeTest") {
    def id = column[Long]("id")
    def comps = column[List[Composite2]]("comps", O.DBType("composite2[]"))

    def * = (id,comps) <> (TestBean.tupled, TestBean.unapply)
  }

  ...



本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Slick-pg v0.2.5 发布, PostgreSQL 的 Slick 扩展
加载中

最新评论(1

Tu_Minglei
Tu_Minglei
不好意思,里面的代码是针对 slick2 的,马上相改但已经改不了了。
slick-pg v0.2.5 (slick1) composite type 的使用说明请看这里:
https://github.com/tminglei/slick-pg/tree/slick1/core/src/main/scala/com/github/tminglei/slickpg/composite
返回顶部
顶部