Scala Slick LocalDateTime与Timestamp转换

在使用Slick操作数据库的时候、如果使用LocalDateTime类型字段、则在数据库中使用的是varchar类型、但是我们需要使用更严格的时间类型Timestamp。这就需要在这两个类型之间来回切换了。

使用方法

  1. 导入包

  com.typesafe.slick
  slick_2.11
  3.3.2

  1. Table配置
import java.sql.Timestamp
import java.time.LocalDateTime

import slick.jdbc.MySQLProfile.api._
import slick.lifted.ProvenShape

case class TableInfo(
                      offsetName: String,
                      offsetTime: LocalDateTime
                    )


class OffsetTable(tag: Tag) extends Table[TableInfo](tag, "offset-table") {

  private val localDateTime2timestamp: BaseColumnType[LocalDateTime] =
    MappedColumnType.base[LocalDateTime, Timestamp](
      { instant => Timestamp.valueOf(instant)
      }, { timestamp => timestamp.toLocalDateTime
      }
    )

  override def * : ProvenShape[TableInfo] =
    (
      offsetName,
      offsetTime
      ).mapTo[TableInfo]

  def offsetName: Rep[String] = column[String]("offsetName", O.Length(200))

  def offsetTime: Rep[LocalDateTime] = column[LocalDateTime]("offsetTime", O.Length(23))(localDateTime2timestamp)

}

你可能感兴趣的:(Scala Slick LocalDateTime与Timestamp转换)