ber*_*zie 24 scala playframework-2.0
我一直在学习Play Framework,访问数据库的推荐方法是使用anorm组件中的build.事实上,在anorm中没有对DateTime的良好支持.它还在使用java.util.Date.
有没有办法在anorm中使用Joda DateTime或java.sql.Timestamp?
如果没有办法使用Joda或java.sql,我们可以为此添加一个模块吗?
mch*_*chv 41
更新:自从播放2.3.7以来,现在本机支持.
我正在使用以下代码与Anorm无缝地使用DateTime.
import org.joda.time._
import org.joda.time.format._
import anorm._
object AnormExtension {
val dateFormatGeneration: DateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmmssSS");
implicit def rowToDateTime: Column[DateTime] = Column.nonNull { (value, meta) =>
val MetaDataItem(qualified, nullable, clazz) = meta
value match {
case ts: java.sql.Timestamp => Right(new DateTime(ts.getTime))
case d: java.sql.Date => Right(new DateTime(d.getTime))
case str: java.lang.String => Right(dateFormatGeneration.parseDateTime(str))
case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass) )
}
}
implicit val dateTimeToStatement = new ToStatement[DateTime] {
def set(s: java.sql.PreparedStatement, index: Int, aValue: DateTime): Unit = {
s.setTimestamp(index, new java.sql.Timestamp(aValue.withMillisOfSecond(0).getMillis()) )
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为它应该最终成为Anorm的一部分,只需要进行抛光和更多测试.如果有帮助,请告诉我.
| 归档时间: |
|
| 查看次数: |
7981 次 |
| 最近记录: |