Last active
December 16, 2015 03:28
-
-
Save yangbajing/5369719 to your computer and use it in GitHub Desktop.
为squeryl 添加joda的DateTime和LocalDate支持。(注:version 0.9.6)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package yangbajing.persistence | |
import scala.language.implicitConversions | |
import java.sql.Timestamp | |
import org.joda.time._ | |
import org.squeryl._ | |
import org.squeryl.dsl._ | |
object SquerylEntrypoint extends SquerylEntrypoint | |
trait SquerylEntrypoint extends PrimitiveTypeMode with MyJodaTime | |
trait MyJodaTime { | |
this: PrimitiveTypeMode => | |
implicit val jodaTimeTEF = new NonPrimitiveJdbcMapper[Timestamp, DateTime, TTimestamp](timestampTEF, this) { | |
def convertFromJdbc(t: Timestamp) = new DateTime(t) | |
def convertToJdbc(t: DateTime) = new Timestamp(t.getMillis()) | |
} | |
implicit val optionJodaTimeTEF = | |
new TypedExpressionFactory[Option[DateTime], TOptionTimestamp] with DeOptionizer[Timestamp, DateTime, TTimestamp, Option[DateTime], TOptionTimestamp] { | |
val deOptionizer = jodaTimeTEF | |
} | |
implicit def jodaTimeToTE(s: DateTime) = jodaTimeTEF.create(s) | |
implicit def optionJodaTimeToTE(s: Option[DateTime]) = optionJodaTimeTEF.create(s) | |
} | |
trait MyLocalDate { | |
this: PrimitiveTypeMode => | |
implicit val localDateTEF = new NonPrimitiveJdbcMapper[java.util.Date, LocalDate, TDate](dateTEF, this) { | |
def convertFromJdbc(t: java.util.Date) = new LocalDate(t) | |
def convertToJdbc(t: LocalDate) = t.toDateMidnight.toDate | |
} | |
implicit val optionLocalDateTEF = | |
new TypedExpressionFactory[Option[LocalDate], TOptionDate] with DeOptionizer[java.util.Date, LocalDate, TDate, Option[LocalDate], TOptionDate] { | |
val deOptionizer = localDateTEF | |
} | |
implicit def localDateToTE(s: LocalDate) = localDateTEF.create(s) | |
implicit def optionLocalDateToTE(s: Option[LocalDate]) = optionLocalDateTEF.create(s) | |
} | |
trait MyLocalTime { | |
this: PrimitiveTypeMode => | |
implicit val localTimeTEF = new NonPrimitiveJdbcMapper[java.sql.Time, LocalTime, TTim]() {} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment