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)

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,494评论 0 9
  • 一、 表设计库名、表名、字段名必须使用小写字母,“_”分割。库名、表名、字段名必须不超过12个字符。库名、表名、字...
    上街买菜丶迷倒老太阅读 4,073评论 2 7
  • 一、数据库简介 1.数据库系统 1.1数据库 DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺...
    郑元吉阅读 623评论 0 6
  • MySQL5.6从零开始学 第一章 初始mysql 1.1数据库基础 数据库是由一批数据构成的有序的集合,这些数据...
    星期四晚八点阅读 1,194评论 0 4
  • 刚刚步入大学的我们总是或多或少的对爱情充满着期待,渴望着谈一段电视中那样的恋爱。 可是理想总是跟现实是相反的。 以...
    遇见_6b7e阅读 617评论 0 0