Liftweb-具有映射器的SQL表字段的最大值
我想找到一种简单的方法来访问liftweb中映射元素的最大值,下面是我实际操作的一个示例: 映射器零件Liftweb-具有映射器的SQL表字段的最大值,sql,scala,lift,mapper,Sql,Scala,Lift,Mapper,我想找到一种简单的方法来访问liftweb中映射元素的最大值,下面是我实际操作的一个示例: 映射器零件 class MappedEntity extends LongKeyedMapper[MappedEntity] with IdPK { def getSingleton = MappedEntity object targetRaw extends MappedInt(this) } object MappedEntity extends MappedEntity with Lon
class MappedEntity extends LongKeyedMapper[MappedEntity] with IdPK {
def getSingleton = MappedEntity
object targetRaw extends MappedInt(this)
}
object MappedEntity extends MappedEntity with LongKeyedMetaMapper[MappedEntity]
val max = MappedEntity.findAllByInsecureSql(
"SELECT MAX (targetRaw) AS targetRaw FROM MappedEntity",
IHaveValidatedThisSQL("chris", "2011,11,14")
).head.targetRaw.get
搜索部分
class MappedEntity extends LongKeyedMapper[MappedEntity] with IdPK {
def getSingleton = MappedEntity
object targetRaw extends MappedInt(this)
}
object MappedEntity extends MappedEntity with LongKeyedMetaMapper[MappedEntity]
val max = MappedEntity.findAllByInsecureSql(
"SELECT MAX (targetRaw) AS targetRaw FROM MappedEntity",
IHaveValidatedThisSQL("chris", "2011,11,14")
).head.targetRaw.get
假设我使用名为mappedenty的SQL表,我希望max
包含string
或int
等于targetRaw
中包含的最大值
如果您有任何建议或问题,我很乐意提供帮助。我不相信lift mapper有运行此查询的内置方式。事实上,它在任何类型的聚合函数上都非常短。我所看到的是 仅适用于返回
Mapper
s类型的对象,从返回类型可以看出
鉴于目前在电梯中并没有很好的方法来实现这一点,您可以选择几个选项
max
函数添加到MetaMapper
。这将是一个小的工作,但你可以使用作为一个指南
- 从技术上讲,可以有一个更通用的实现来处理所有聚合函数(max、min、sum、count等)。这可能就是我们在商界所说的“过度杀戮”
DB.use(DefaultConnectionIdentifier) { conn =>
// execute query
}
val max: Option[String] = MappedEntity.findAll(
BySql("targetRaw IN (SELECT MAX (targetRaw) FROM MappedEntity)",
IHaveValidatedThisSQL("chris", "2011,11,14")).map(_.targetRaw.is).headOption
以下是我最终使用的解决方案:
val max = DB.runQuery("SELECT YEAR(MAX(targetRaw)) FROM targetTable")._2.head.head.toInt
谢谢你提供了非常完整的答案,我想我将探讨解决方案3。这当然是最简单的!请您提供解决方案3中使用的请求,它将使您的答案完整而完美。