Scala Slick LocalDateTime與Timestamp轉換

在使用Slick操作數據庫的時候、如果使用LocalDateTime類型字段、則在數據庫中使用的是varchar類型、但是我們需要使用更嚴格的時間類型Timestamp。這就需要在這兩個類型之間來回切換了。

使用方法

  1. 導入包
<dependency>
  <groupId>com.typesafe.slick</groupId>
  <artifactId>slick_2.11</artifactId>
  <version>3.3.2</version>
</dependency>
  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)

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章